pca006132
本帖最后由 cyqsimon 于 2015-9-30 18:40 编辑
The bugfix yesterday was "just" a race condition. Entities were added to chunks before those existed on the client, so they were not visible

Searge: 昨天的修复"只是"一个资源竞争[1]问题,实体在客户端出现前已经在区块中出现,所以它们对用户不可见
Immutable data can't have race conditions, but I assume it would also make a very boring game.

Searge: 不可变数据[2]不会有资源竞争问题,但是我觉得它也会令游戏非常沉闷

推文: https://twitter.com/SeargeDP/status/648836545286422528 https://twitter.com/SeargeDP/status/648836858064052224



[1]: Race Condition Wikipedia Link
[2]: Immutable Object Wikipedia Link



朝阳区看你们全看不懂觉得也该解释一下了

java编程里常常需要用到多线程以提高效率,而多线程就会产生非顺序执行的现象,如果是对于同一个变量的操作就会容易产生错误

在这个特定情况里,个人理解是Internal Server的线程和客户端的线程(Minecraft单机时其实是在后台运行一个完整服务端)同时对单个实体(一个java对象)的数据进行了写入操作,造成出错导致无法正确显示

至于为何不可变数据不会有资源竞争问题,理由其实很简单。资源竞争问题的先发条件是多个线程同时对同一数据进行写入操作。然而不可变数据是不可写入的,自然就不会有资源竞争问题。至于为何说它会令游戏非常沉闷,不可变的游戏会好玩吗?

水蘊臻
并没有看懂

毒蛇
看不懂怎么办

第一页 上一页 下一页 最后一页