【发布时间】:2017-07-11 21:52:31
【问题描述】:
据我所知,线程中的变量如果没有锁定应该是不安全的。但我在 Unity 上尝试过,发现它有所不同。 我试试下面的代码:
void Awake () {
Thread thread = new Thread(new ThreadStart (demo));
thread.Start ();
for (int i = 0; i < 5000; i++) {
count = count + 1;
}
}
void demo() {
for (int i = 0; i < 5000; i++) {
count = count + 1;
}
}
我尝试Debug.Log(count),每次尝试都是10000。但它应该是一个小于10000的数字,因为不是线程安全,不应该'是吗?那么谁能告诉我为什么?
【问题讨论】:
-
您能否发一个minimal reproducible example 以便我们可以复制粘贴并运行您的代码?
-
你能告诉我们你调用唤醒方法的代码吗
-
@OusmaneDiaw - 我们需要完整的代码,而不仅仅是对
.Awake()的调用。我们需要一个minimal reproducible example。
标签: c# multithreading unity3d thread-safety