⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 semaphore.c

📁 &#61550 使用信号量实现有限缓冲区的生产者和消费者问题 &#61550 使用信号量实现读进程具有优先权的读者和写者问题
💻 C
字号:
#include <unistd.h>#include <sys/types.h>#include <sys/sem.h>#include <stdio.h>#include "stdlib.h"int semaphore_wait(int id, int idx){  struct sembuf sem_op;   		sem_op.sem_num = idx;   		sem_op.sem_op = -1;   		sem_op.sem_flg = SEM_UNDO ;//| IPC_NOWAIT;   		return semop(id, &sem_op, 1) ;	} int semaphore_signal(int id, int idx){   struct   sembuf   sem_op;      sem_op.sem_num = idx;      sem_op.sem_op = 1;      sem_op.sem_flg = SEM_UNDO;      if(semop(id, &sem_op, 1) < 0)		return -1;	return 0;}int semaphore_create(key_t sem_key,int n){	unsigned long sem_id;	int ret;	sem_id = semget(sem_key, n, IPC_CREAT | 0600);  	return sem_id;}void semaphore_set_val(int id,int idx,int val){	 int ret;	 ret = semctl(id, idx, SETVAL, val);   // 设置互斥信号量初值	if(ret < 0)	{		return -1;	}}void semaphore_destroy(int  id){	semctl(id,0,IPC_RMID,0);}void semaphore_state(int id){	printf("SERVER:semaphore:0x%x\n",semctl(id, 0, GETVAL, 0 ));	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -