IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python模拟哲学家进餐问题 -> 正文阅读

[Python知识库]Python模拟哲学家进餐问题

有两个哲学家坐在桌子上,桌子上放了两只筷子,编号分别是a和b,只有同时得到a、b两只筷子时哲学家才能吃饭,如果筷子a被哲学家1号抢到了,筷子b被哲学家2号抢到了,此时两位哲学家都想要得到对方手中的筷子然后去吃一口饭,但是又不肯主动放下自己手中的筷子给对方,此时就进入了漫长的等待对方释放自己想要的“资源”的过程,也就产生了死锁。

import threading
import time

# 创建两个锁
lock_a=threading.Lock()
lock_b=threading.Lock()


def philosopher_a():
    for i in range(99):
        # 上锁
        lock_a.acquire()
        print('哲学家a给lock_a加锁,抢到了筷子a')
        lock_b.acquire()
        print(f'哲学家a给lock_b加锁,抢到了筷子b,ab两只筷子到手,吃第{i+1}口饭')
        # 解锁
        lock_a.release()
        print('哲学家a给lock_a解锁,释放了筷子a')
        lock_b.release()
        print('哲学家a给lock_b解锁,释放了筷子b')
        # time.sleep(0.5)

def philosopher_b():
    for i in range(99):
        # 上锁
        lock_b.acquire()
        print('哲学家b给lock_b加锁,抢到了筷子b')
        lock_a.acquire()
        print(f'哲学家b给lock_a加锁,抢到了筷子a,ab两只筷子到手,吃第{i+1}口饭')
        # 解锁
        lock_b.release()
        print('哲学家b给lock_b解锁,释放了筷子b')
        lock_a.release()
        print('哲学家b给lock_a解锁,释放了筷子a')
        # time.sleep(0.5)


if __name__ == '__main__':
    t1=threading.Thread(target=philosopher_a)
    t2=threading.Thread(target=philosopher_b)
    t1.start()
    t2.start()

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:28:10  更:2022-01-17 11:29:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:53:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码