用python定义一个全局变量count,创建两个线程1和2; 2) 线程1读取全局变量count的值到局部变量a,局部变量a加10后重新赋值给count; 3)线程2读取全局变量count的值到局部变量b,局部变量b加20后重新赋值给count。
时间: 2024-09-30 14:05:17 浏览: 30
在Python中,可以使用`threading`模块来创建并同步线程。首先,需要定义一个全局变量`count`。为了实现多线程共享和修改这个全局变量,我们需要确保操作是线程安全的,因为直接对全局变量的修改可能会导致竞态条件。一种常见的做法是使用`Lock`或者`Semaphore`来进行同步。
```python
import threading
# 定义全局变量
count = 0
lock = threading.Lock() # 使用锁进行同步
def thread_func(thread_id):
with lock: # 获取锁
local_count = count # 读取全局变量
local_count += (thread_id * 10) # 加上本地操作
with lock: # 写回全局变量前再次获取锁
count = local_count # 更新全局变量
# 创建并启动线程
thread1 = threading.Thread(target=thread_func, args=(1,))
thread2 = threading.Thread(target=thread_func, args=(2,))
thread1.start()
thread2.start()
# 等待线程结束
thread1.join()
thread2.join()
print(f"最终计数: {count}")
```
在这个例子中,每个线程都先锁定全局变量,然后读取当前值、进行本地计算,再锁定并更新全局变量。这样就保证了在任何时候只有一个线程能修改`count`,避免了数据竞争。
阅读全文