【发布时间】:2017-03-21 20:00:00
【问题描述】:
假设我有一个具有全局变量、方法和几个线程的类。
class Class
{
public var Var1;
piblic mainFoo()
{
thread1.start(thread_foo1);
thread2.start(thread_foo2);
}
public void Foo(var1, var2, var3)
{
...
}
private thread_foo1()
{
if(Var1) {}
Foo(_var1,_var2,_var3);
}
private thread_foo2()
{
if(Var1) {}
Foo(_var1,_var2,_var3);
}
}
Var1 除了主线程外没有任何变化。 Foo 不会更改任何线程中的任何数据,它只是一些我不想重复的小通用代码。这种结构是否会导致线程中的任何问题或冲突?
【问题讨论】:
-
除了最初的变量之外,你的主线程是否更新了变量?
-
不,只要两个线程可以同时在
Foo中运行就可以了……但情况并非总是如此。 -
@WillemVanOnsem 被撕毁了怎么办?
-
@johnny5:只有当某个线程写入到您读取的对象时,才会发生撕裂的读取。在问题中,据说没有线程 write.
-
OP:
Var1 is not changed anywhere but the main thread这意味着主线程可以更改变量,在示例var Var1中正确声明 Var1 如果它是布尔值,一切都应该(假设是)没问题
标签: c#