import threading
x = 0;
class Thread1(threading.Thread):
def run(self):
global x
for i in range(1,100000):
x = x + 1
class Thread2(threading.Thread):
def run(self):
global x
for i in range(1,100000):
x = x - 1
#create two threads
t1 = Thread1()
t2 = Thread2()
#start the threads
t1.start()
t2.start()
#wait for the threads to finish
t1.join()
t2.join()
print x;
これを複数回実行すると、異なる出力が生成されます。一部は負で、一部は正です。2つのスレッドが同じグローバルxを使用しているためですか?理由がわかりません。すべてのほこりが落ち着いた後、正味の効果(出力)を同じにすべきではありませんか?