操作系统
合道为善
这个作者很懒,什么都没留下…
展开
-
哲学家就餐问题
问题分析:将就餐看做互斥事件 改进 将哲学家的状态作为互斥事件 注意test_take_left_right_frok()中的v操作原创 2019-08-29 22:52:08 · 134 阅读 · 0 评论 -
死锁与银行家算法
安全序列(死锁避免) -对于p1有Need < V,则可以结束,释放其拥有的资源 死锁检测 缺点:开销大原创 2019-08-29 22:52:41 · 189 阅读 · 0 评论 -
进程间通信
常用方法 信号 管道 消息队列 与管道的区别: 管道是通过父进程,帮子进程建立好的通道,且 数据是字节流(不是结构化的数据) 共同点: 有buffer的限制 共享内存 ...原创 2019-08-29 22:53:24 · 71 阅读 · 0 评论 -
读者-写者问题
使用信号量实现读者优先 使用管程实现读者-写者问题(写者优先)原创 2019-08-29 22:51:30 · 260 阅读 · 0 评论 -
线程同步的四种方式(一)
互斥对象 首先我们需要创建CreateMutex一把互斥对象,我们可以指明当前线程是否拥有它,互斥对象完全就像一把钥匙一样,我们用WaitForSignalObject来等待这把钥匙,但是这把钥匙被等到并且使用后必须释放-----ReleaseMutex ,不然别人永远无法等到。这样从等待到释放中间的代码段永远都是只有一个线程在执行,也就形成了互斥控制。当然互斥对象的句柄是要关闭的CloseHa...转载 2018-09-18 23:56:22 · 738 阅读 · 0 评论 -
线程同步的四种方式(二)
信号量 信号量是一个非负整数(车位数),所有通过它的线程/进程(车辆)都会将该整数减一(通过它使得资源被使用了1个),当该整数值为零时,所有试图通过它的线程(车辆)都将处于等待状态。在信号量上我们定义两种操作: Wait(等待函数) 和 Release(释放函数)。当一个线程调用Wait操作时,它要么得到资源然后将信号量减一,要么一直等下去(指放入阻塞队列),直到信号量大于等于一时。Releas...转载 2018-09-29 15:37:22 · 220 阅读 · 0 评论 -
一个简单的程序
一个简单的Hello, Concurrent World程序: #include<iostream> #include<thread> using namespace std; void hello() { cout << "Hello Concurrent World\n"; } int main()//初始线程 { thread t...原创 2019-08-29 23:07:49 · 283 阅读 · 0 评论