Python 中线程锁(Thread Lock)非常重要,可以用来避免多个线程同时对同一个共享数据进行写操作,导致数据混乱,线程锁可以保证同时只有一个线程对数据进行操作。
import threading
counter = 0
def increment():
global counter
counter += 1
def worker(lock):
for i in range(10000):
lock.acquire()
increment()
lock.release()
def main():
lock = threading.Lock()
threads = []
# 创建100个线程
for i in range(100):
# 给每个线程分配一个线程锁
t = threading.Thread(target=worker, args=(lock,))
threads.append(t)
# 启动所有线程
for t in threads:
t.start()
# 等待所有线程完成
for t in threads:
t.join()
print("Counter =", counter)
if __name__ == '__main__':
main()
在这个例子中,我们创建了一个计数器变量 counter,并用 100 个线程同时对它进行加 1 操作。在每个线程中,我们获取线程锁 lock,对 counter 进行操作后,再释放锁。这样可以确保同一时刻只有一个线程能够获取锁并修改 counter。
总结来说,线程锁是多线程编程中必不可少的工具,能够确保共享资源的安全访问,值得我们在编写多线程代码时注意。