线程交替实现i加1减1
时间: 2024-05-01 22:21:24 浏览: 14
可以用两个线程分别实现i加1和减1的操作,让它们交替执行。
下面是一个简单的示例代码:
```python
import threading
i = 0
lock = threading.Lock()
def increase():
global i
for _ in range(1000000):
lock.acquire()
i += 1
lock.release()
def decrease():
global i
for _ in range(1000000):
lock.acquire()
i -= 1
lock.release()
t1 = threading.Thread(target=increase)
t2 = threading.Thread(target=decrease)
t1.start()
t2.start()
t1.join()
t2.join()
print("i =", i)
```
这个程序定义了两个函数`increase`和`decrease`,分别对全局变量`i`进行加1和减1操作。在每个操作之前,线程需要获取锁,以避免多个线程同时修改`i`的值。在操作完成后,线程需要释放锁,以允许其他线程获取锁并进行操作。
主程序中创建了两个线程`t1`和`t2`,它们分别执行`increase`和`decrease`函数。通过调用`start`方法启动线程,然后通过`join`方法等待线程执行完毕。最后输出全局变量`i`的值。
这个程序的输出结果应该为0,因为`increase`和`decrease`函数的执行次数相同,每次操作都会对`i`进行加1和减1操作,最终`i`的值应该保持不变。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)