使用同步工具——栅栏(Barrier)来保证所有线程在障碍点处同步。栅栏的作用是将所有线程阻塞在障碍点处,直到所有线程都到达障碍点后才能继续执行。下面是一个简单的代码示例:
import threading
barrier = threading.Barrier(4) # 创建栅栏,指定等待的线程数为4
results = [] # 保存每个线程的结果
def worker(id):
# 模拟线程执行相同操作
result = id * 2
# 到达障碍点,等待其他线程
barrier.wait()
# 将结果存入列表中
results.append(result)
# 创建4个线程并启动
threads = []
for i in range(4):
t = threading.Thread(target=worker, args=(i,))
threads.append(t)
t.start()
# 等待所有线程执行完毕
for t in threads:
t.join()
# 打印所有线程的结果
print(results)
在上面的例子中,我们创建了一个栅栏,并将等待的线程数设为4。在每个线程中,先执行相同的操作,然后在障碍点处等待其他线程。当所有线程都到达障碍点后,栅栏释放所有线程,使它们继续执行。最后,我们可以看到所有线程的结果都被正确地保存在了列表中。