编写一个多线程程序:要求主线程创建3个子线程, 3个子线程在执行时都修改一个它们的共享变量,观察共享变量的值,看看可以得出什么结论。
时间: 2024-02-09 19:12:40 浏览: 86
好的,下面是一个简单的多线程程序,可以满足您的需求:
```python
import threading
# 共享变量
shared_var = 0
# 线程函数
def thread_func():
global shared_var
for i in range(1000000):
shared_var += 1
# 创建子线程
threads = []
for i in range(3):
t = threading.Thread(target=thread_func)
threads.append(t)
t.start()
# 等待子线程结束
for t in threads:
t.join()
# 输出共享变量的值
print("共享变量的值为:", shared_var)
```
在这个程序中,主线程创建了3个子线程,每个子线程都执行一个名为`thread_func`的函数。`thread_func`函数的作用是在一个循环中多次将共享变量`shared_var`加1。在每个线程执行完毕后,主线程输出共享变量的值。
由于3个子线程都会修改共享变量,因此我们可以得出结论:多个线程同时修改一个共享变量可能会导致数据不一致的问题。在这个例子中,由于`shared_var`的值会被多个线程同时修改,因此最终的结果可能会小于3000000,这取决于线程的执行顺序和时间片分配等因素。如果您多次运行这个程序,可以看到输出结果不一定相同。为了避免这种情况,我们可以使用锁或其他同步机制来保证多个线程不会同时修改共享变量。
阅读全文