进程同步问题-生产者消费者问题(linux semaphore实现)
来源:互联网 发布:为提高淘宝销量 编辑:程序博客网 时间:2024/05/12 15:39
本文地址:
http://blog.csdn.net/qq_26437925/article/details/52638582
源代码地址(通过ubuntu14.04 32bit 测试):
https://github.com/doctording/clib/tree/master/thread/producer_consumer
学习目标:
- linux 线程
- linux 信号(Semaphore)的使用
- makefile书写
- 生产者,消费者问题理解
原文参考
csdn博客专家:MoreWindows
秒杀多线程第十篇 生产者消费者问题
http://blog.csdn.net/lisonglisonglisong/article/details/45390227
linux ftok()函数
http://www.cnblogs.com/joeblackzqq/archive/2011/05/31/2065161.html
图书参考
《unix环境高级编程》/ APUE
在源代码基础上写改了下,是能够在本机上运行,并且编写了makefile文件。
semaphore 的semget,semctl,semop这几个函数要重点观察
生产者消费者问题进程描述
semaphore mutex=1; //临界区互斥信号量semaphore empty=n; //空闲缓冲区semaphore full=0; //缓冲区初始化为空producer () { //生产者进程 while(1){ produce an item in nextp; //生产数据 P(empty); //获取空缓冲区单元 P(mutex); //进入临界区. add nextp to buffer; //将数据放入缓冲区 V(mutex); //离开临界区,释放互斥信号量 V(full); //满缓冲区数加1 }}consumer () { //消费者进程 while(1){ P(full); //获取满缓冲区单元 P(mutex); // 进入临界区 remove an item from buffer; //从缓冲区中取出数据 V (mutex); //离开临界区,释放互斥信号量 V (empty) ; //空缓冲区数加1 consume the item; //消费数据 }}
注意:生产者先 p(mutex) , 再 p(empty), 消费者先p(metux) 再p(full) 不可行
当生产者进程已经放满缓冲区时,消费者没有取产品即empty=0, 当下次仍然是生产者进程运行时
他先执行p(mutex)封锁信号量,在执行p(empty)时被阻塞,希望消费者取出产品后 将其唤醒。
轮到消费者进程运行时,先p(metux) 而生产者已经封锁了mutex信号量,这是消费者将被阻塞。
这样双方都陷入了无休止的等待。
- 进程同步问题-生产者消费者问题(linux semaphore实现)
- 进程同步-生产者消费者问题
- 进程同步-生产者消费者问题
- 生产者消费者问题Semaphore
- 经典进程同步问题-生产者消费者问题
- 操作系统:经典进程同步问题(1)生产者-消费者问题
- Linux下信号量实现进程同步、互斥(生产者消费者问题)
- 经典进程同步问题-生产者与消费者
- C++模拟“生产者消费者”进程同步问题
- Linux平台下线程同步,实现“生产者消费者问题”
- 生产者-消费者同步问题
- 生产者消费者问题-同步
- c用信号量(Semaphore)实现消费者生产者同步
- linux进程内存共享---实现生产者消费者问题
- linux中的线程同步:生产者、消费者问题
- 消费者-生产者问题---进程的实现信号量
- 经典进程同步问题 生产者——消费者问题
- 【操作系统总结】经典的进程同步问题-生产者消费者问题
- Python3: urllib.request 的使用
- vxworks启动详解
- svn如何进行版本还原
- 关于jquery的extend和fn.extend 一些知识点
- Android 嵌套H5界面的支付,如何调起本地的支付的简略逻辑
- 进程同步问题-生产者消费者问题(linux semaphore实现)
- WireShark教程
- Universal-Image-Loader
- 11.Java内存模型
- 从机器学习谈起
- angular.min.js:118 Error: [ng:areq] http://errors.angularjs.org/1.5.8/ng/areq?
- Mbatis 的#{}和¥{}说明:
- Ubuntu上安装搜狗中文输入法
- Toolbar改变Action Menu Item 的文字颜色