有100份礼品,小红,小明两人同时发送,当剩下的礼品小于10份的时候则不再送出,利用多线程模拟该过程并将线程的名称打印出来。并最后在控制台分别打印小红,小明各自送出多少分礼物。 请使用多线程来完成这个案例
时间: 2024-04-15 15:30:02 浏览: 26
这是一个使用多线程模拟礼品发送的案例。我们可以创建两个线程,分别代表小红和小明,让它们同时发送礼品。当剩下的礼品小于10份时,线程停止发送。
下面是一个使用Python的多线程实现的示例代码:
```python
import threading
gifts = 100
lock = threading.Lock()
def send_gifts(name):
global gifts
while gifts >= 10:
lock.acquire()
if gifts >= 10:
gifts -= 10
print(f'{name}送出了10份礼物,剩余{gifts}份')
lock.release()
red_thread = threading.Thread(target=send_gifts, args=('小红',))
ming_thread = threading.Thread(target=send_gifts, args=('小明',))
red_thread.start()
ming_thread.start()
red_thread.join()
ming_thread.join()
print('小红送出了', 100 - gifts, '份礼物')
print('小明送出了', 100 - gifts, '份礼物')
```
在这个例子中,我们使用了一个全局的变量`gifts`来表示剩余的礼品数量。通过`Lock`对象来确保每次只有一个线程可以修改`gifts`的值,以避免竞争条件。
两个线程分别代表小红和小明,通过调用`send_gifts`函数来发送礼品。当礼品数量小于10时,线程停止发送。
最后,在控制台分别打印小红和小明各自送出多少份礼物。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)