博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
信号量解决经典进程同步问题:生产者消费者模型,读者写者问题以及哲学家问题
阅读量:3948 次
发布时间:2019-05-24

本文共 948 字,大约阅读时间需要 3 分钟。

Classical Problems of Synchronization

Bounded-Buffer Problem

semaphore full, empty, mutex;Initially:full = 0, empty = n, mutex = 1
do { … 	produce an item in nextp    …     wait(empty);    wait(mutex);    …     add nextp to buffer    …     signal(mutex);     signal(full);     } while (1);
do {	wait(full) 	wait(mutex);	… 	remove an item from buffer to nextc	…	signal(mutex);	signal(empty);	… 	consume the item in nextc …	} while (1);

Readers-Writers Problem

读者优先 写者优先

semaphore mutex, wrt;Initiallymutex = 1, wrt = 1, readcount = 0
wait(mutex);readcount++; if (readcount == 1) 	wait(wrt);signal(mutex);	…reading is performed	… wait(mutex);readcount--;if (readcount == 0) signal(wrt);signal(mutex):

Dining-Philosophers Problem

Philosopher i:	do { 		wait(chopstick[i])        wait(chopstick[(i+1) % 5])        …         eat        …         signal(chopstick[i]);        signal(chopstick[(i+1) % 5]);        …        think        …       } while (1);

转载地址:http://rlgwi.baihongyu.com/

你可能感兴趣的文章
iOS常用宏命令大全
查看>>
YYKit - YYModel 使用方法
查看>>
OC网络封装工具
查看>>
iOS-浅谈block
查看>>
Socket介绍
查看>>
swift-闭包产生的循环引用以及解决办法
查看>>
gitbook安装与使用
查看>>
Apache服务器搭建方法
查看>>
Mac终端常用命令
查看>>
常用算法-冒泡排序代码实现
查看>>
swift 中的 感叹号 问号 和 双问号用法详解
查看>>
C代码:二分法求三次方程近似根
查看>>
swift-自己封装的一个网络工具
查看>>
APP第三方登录实现步骤
查看>>
iOS-数据存储方式介绍
查看>>
KVO & KVC 比较 - KVC
查看>>
iOS-tableView联动
查看>>
iOS--Masonry解决 tableViewCell 重用时约束冲突
查看>>
git 与 svn 的主要区别!
查看>>
iOS-截屏,从相册选择图片,制作磨砂效果图片
查看>>