并发和竞争条件

时间:2017-03-20 09:45:31

标签: python multithreading concurrency race-condition python-multithreading

我期待在这里发生竞争。但事实并非如此。为什么呢?

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完成执行后才开始运行。

0 个答案:

没有答案