我期待在这里发生竞争。但事实并非如此。为什么呢?
import threading
x = 0
def foo():
global x
for i in range(1000):
print x
x += 1
def bar():
global x
for i in range(1000):
print x
x -= 1
if __name__ == "__main__":
t1 = threading.Thread(target=foo)
t2 = threading.Thread(target=bar)
t1.start(); t2.start()
t1.join(); t2.join()
print x
x的最终值始终为0.不仅如此,第二个线程似乎仅在线程1完成执行后才开始运行。