生产者消费者问题 是同步互斥的经典问题。 目的就是验证用信号量机制实现进程互斥的方法,验证用信号量机制实现进程同步的方法。 了解经典同步问题“生产者和消费者” 生产者与消费者可以通过一个环形缓冲池联系起来,环形缓冲池由几个大小相等的缓冲块组成,每个缓冲块容纳一个产品。每个生产者可不断地每次往缓冲池中送一个生产产品,而每个消费者则可不断地每次从缓冲池中取出一个产品。指针in和指针out分别指出当前的第一个空缓冲块和第一个满缓冲块。 首先是在Windows下编写的生产着消费者代码:
1 |
|
我采用了多线程多个生产者消费者来进行 运行结果: 这里还有在linux下运行的代码:
1 |
|
下面是在linux下运行的步骤:(有些需要注意的问题在之前的博文中也提到过了) 对代码文件进行编译: 首先打开命令界面,输入 g++ a.cpp –o b –lpthread 即可编译成功生成可执行文件。 运行文件: 在命令行输入: ./b 即可运行文件 需要注意的是: 输出为中文的话可能会出现乱码因此改为了英文。 结果: