生产者和消费者
#include<unistd.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#include<sys/shm.h>
#include<sys/mman.h>
#include<stdio.h>
#include<stdlib.h>
#define SHM_SIZE (1024*1024)
#define SHM_MODE 0600
#define SEM_MODE 0600
#if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED)
/* union semun is defined by including <sys/sem.h> */
#else
/* according to X/OPEN we have to define it ourselves */
union semun{
int val;
struct semid_ds *buf;
unsigned short *array;
};
#endif
struct ShM{
int start;
int end;
}* pSM;
int count=30;//计数器,produce执行30次后终止程序
const int num_of_consumer = 3;//消费者数量
const int size_of_buffer=5;//缓冲区大小
int shmId = -1;
int semSetId = -1;
union semun su;//sem union,用于初始化信号量
void semWait(int semSetId,int semNum)
{
struct sembuf sb;
sb.sem_num

这篇博客探讨了使用信号量在操作系统中解决生产者-消费者问题和读者-写者问题。通过示例代码,展示了如何利用信号量进行同步控制,以避免资源竞争。同时,博主提醒部分内容参考自网络,如有版权问题,欢迎留言沟通。
最低0.47元/天 解锁文章
616

被折叠的 条评论
为什么被折叠?



