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对象)的数据进行了写入操作,造成出错导致无法正确显示

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

水蘊臻
并没有看懂

毒蛇
看不懂怎么办

chyx

这个时候想想这不是给我看的就好啦

侑阳
chyx 发表于 2015-9-29 21:31
这个时候想想这不是给我看的就好啦

机制.如此明事理

猪一头
反正不是给我看的

IceFreeze
mc的沙盒模式正是因为可以大幅度更变的自由模式才有名的,如果都常量了,自然┑( ̄Д  ̄)┍

andylizi
虽然只能看懂一些。。但是我想说,
资源竞争问题的先发条件是多个线程同时对同一数据进行写入操作

这不是线程安全问题吗。。
同步块何在。。?

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