操作系统
肝帝丶l
程序员
展开
-
消费者与生产者模型,以及用栈和队列实现
生产者与消费者模型 生产者:产生数据的进程或线程 消费者:使用数据的进程或线程 仓库:隔离生产者与消费者的缓冲区,与二者直连相比,避免了相互等待,提高了运行效率 问题1:生产快于消费,仓库满,生产者撑死。 生产者降低生产,通知消费,生产者线程进入睡眠叫醒睡眠的消费者线程 问题2:消费快于生产,仓库空,消费者饿死。 消费者降低消费,通知生产 消费者线程进入睡眠,叫醒睡眠的生产者线程 条件变量 可以让线程睡进去或者醒过来的一个容器,要与互斥锁配合使用 pthread_cond_t int pthread_原创 2020-12-16 19:00:11 · 215 阅读 · 0 评论 -
操作系统中的死锁问题(精简版)
什么是死锁 多个进程或线程互相以阻塞状态等待对方的资源,在得到所有的对方的资源之前,都不会释放自己现有的资源,这样形成的循环等待现象叫死锁。 产生死锁的四个条件 1、资源不共享(资源互斥) 2、占有且等待(请求且保持) 3、资源不可剥夺 4、环路等待 解决死锁的方法 1、资源剥夺法 将处于死锁状态的其中一个进程挂起,并抢占它的资源,将这些资源分配给其他等待的死锁进程 2、撤销进程法 按照优先级、强制杀死部分进程,将其资源释放出来,然后其他等待的死锁进程资源自原创 2020-12-16 18:52:25 · 485 阅读 · 1 评论