在多线程程序中,锁定单个字段或单元格往往是必须的,以防止竞态条件和其他线程干扰。下面是一个示例代码,展示如何在并行执行2D数组时锁定单个字段/单元格:
import threading
# 定义线程函数
def worker(row, col, lock, arr):
# 锁定单个单元格
with lock:
# 访问单元格
arr[row][col] += 1
if __name__ == '__main__':
# 初始化2D数组
arr = [[0 for _ in range(10)] for _ in range(10)]
# 初始化锁对象
lock = threading.Lock()
# 多线程执行
threads = []
for row in range(10):
for col in range(10):
t = threading.Thread(target=worker, args=(row, col, lock, arr))
t.start()
threads.append(t)
# 等待所有线程结束
for t in threads:
t.join()
# 打印结果
print(arr)
在示例代码中,我们使用Python的线程锁定对象来锁定单个单元格。在worker函数中,我们使用with语句来获取锁对象并访问单元格。最后,我们等待所有线程结束并打印结果。
该方法可以在并发的情况下安全地访问2D数组的单个字段/单元格。
上一篇:并行执行 - Spark