最佳答案
我试图理解线程和并发的基本知识。我想要一个简单的情况下,两个线程重复尝试访问一个共享资源。
密码:
import threading
class Thread(threading.Thread):
def __init__(self, t, *args):
threading.Thread.__init__(self, target=t, args=args)
self.start()
count = 0
lock = threading.Lock()
def increment():
global count
lock.acquire()
try:
count += 1
finally:
lock.release()
def bye():
while True:
increment()
def hello_there():
while True:
increment()
def main():
hello = Thread(hello_there)
goodbye = Thread(bye)
while True:
print count
if __name__ == '__main__':
main()
所以,我有两个线程,都试图增加计数器。我认为如果线程‘ A’称为 increment()
,那么 lock
就会建立起来,阻止‘ B’访问,直到‘ A’被释放。
运行 the 可以清楚地看到情况并非如此。您可以得到所有随机的数据增量。
锁对象到底是如何使用的?
另外,我尝试将锁放入线程函数中,但仍然没有结果。