标题是,几个线程访问一个变量,只有一个线程会更改变量,而其他所有线程都只读取它的值。像这样:
主题1 :
while True:
a += 1
主题2,3,4,...... :
print a
在这种情况下,只有线程1正在更改变量a
。是否会发生任何严重问题?
我发现了一个类似的C / C ++标记问题,标题为“in which cases do I need to lock a variable from simultaneous access?”,从答案看来,我唯一需要担心的是从另一个线程获得的a
可能没有更新。
我要问的是,除了我可能没有获得最新值之外,如果我在访问变量时没有锁定变量,是否有可能发生更严重的事情并粉碎代码?
我不认为这与语言有关,但如果重要的话,我对Python的情况特别感兴趣。
答案 0 :(得分:1)
一般来说,问题的灾难性将取决于其他一个线程获得错误值的后果。
答案可能确实与计算机语言有关:请参阅Software section上一般维基百科文章中的Race condition。
与此相关的是,由于“GIL”,大多数情况下Python程序不执行真正的多线程,因为解释器不是线程安全的。
答案 1 :(得分:-2)
无论语言如何,通过两个单独的线程更新变量都会影响该值。但打印值不会。唯一的问题是所有线程(2个以上)将打印不同的值。
认为这发生在数据库中。一个人可以更新dB,但许多人可以读取它。