麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

liunx 信號量(Semphore)學習

2019-11-08 00:38:59
字體:
來源:轉載
供稿:網友

信號量(Semphore)

#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <fcntl.h>#include <stdlib.h>#include <string.h>#include <sys/sem.h>union semun{	int val;	struct semid_ds *buf;	unsigned short *arry;};static int sem_id = 0;static int set_semvalue();static void del_semvalue();static int semaphore_p();static int semaphore_v();int main(int argc, char *argv[]) {	char message = 'X';	int i = 0;	// 創建信號量	sem_id = semget((key_t)1234, 1, 0666|ipC_CREAT);	if (argc > 1)	{		// 程序第一次被調用,初始化信號量		if (!set_semvalue())		{			fPRintf(stderr, "Failed to initialize semaphore./n");			exit(EXIT_FAILURE);		}		// 設置要輸出到屏幕中的信息,及其參數的第一個字符		message = argv[1][0];	}	for (i = 0; i < 10; ++i)	{		// 進入臨界區		if (!semaphore_p())			exit(EXIT_FAILURE);		// 向屏幕中輸出數據		printf("%c", message);		// 清理緩沖區,然后休眠隨機時間		fflush(stdout);		sleep(rand() % 3);		// 離開臨界區前再次向屏幕輸出數據		printf("%c  ", message);		fflush(stdout);		// 離開臨界區,休眠隨機時間后繼續循環		if (!semaphore_v())			exit(EXIT_FAILURE);		sleep(rand() % 2);	}	sleep(10);	printf("/n%d finished./n", getpid());	if (argc > 1)	{		// 如果程序是第一次被調用,則在推出前刪除信號量		sleep(3);		del_semvalue();	}	exit(EXIT_SUCCESS);}static int set_semvalue(){	// 用于初始化信號量,在使用信號量前必須這樣做	union semun sem_union;	sem_union.val = 1;	if (semctl(sem_id, 0, SETVAL, sem_union) == -1)		return 0;	return 1;}static void del_semvalue(){	// 刪除信號量	union semun sem_union;	if (semctl(sem_id, 0, IPC_RMID, sem_union) == -1)		fprintf(stderr, "Failed to delete semaphore./n");}static int semaphore_p(){	// 對信號量做減1操作,即等待P(sv)	struct sembuf sem_b;	sem_b.sem_num = 0;	sem_b.sem_op = -1; // p()	sem_b.sem_flg = SEM_UNDO;	if (semop(sem_id, &sem_b, 1) == -1) {		fprintf(stderr, "semaphore_p failed./n");		return 0;	}	return 1;}static int semaphore_v(){	// 釋放操作,使信號量變為可用,即發送信號V(sv)	struct sembuf sem_b;	sem_b.sem_num = 0;	sem_b.sem_op = 1; // V()	sem_b.sem_flg = SEM_UNDO;	if (semop(sem_id, &sem_b, 1) == -1)	{		fprintf(stderr, "semaphore_v failed./n");		return 0;	}	return 1;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 深夜影院一级毛片 | 久久国产精品久久久久久 | 日韩毛片一区二区三区 | 欧美黄 片免费观看 | 欧美一级淫片免费播放口 | 成人精品久久 | 超碰在线97国产 | fc2国产成人免费视频 | 亚洲欧美一区二区三区在线观看 | 成人免费视频 | 久久精品国产99国产精品亚洲 | 精品在线免费播放 | 国产成人高清成人av片在线看 | 欧美视频网 | 在线91视频 | 日本在线播放一区 | 久久色播 | 国产一级淫片在线观看 | 久久91精品视频 | 视频久久免费 | 免费91在线 | 女教师~淫辱の动漫在线 | 九色新网址| 曰批全过程120分钟免费69 | 国产91av视频 | 最新中文字幕日本 | 国产一区二区三区在线视频 | 久久精品伊人网 | 99麻豆久久久国产精品免费 | 一区二区三区视频在线观看 | 久久精品99久久久久久2456 | 成人精品视频在线 | 国产精品久久久久久久久久尿 | 性少妇chinesevideo | 99爱视频 | 亚洲婷婷日日综合婷婷噜噜噜 | 午夜视频在线看 | 国产一级毛片国语版 | 日本高清在线免费 | 九九热在线免费观看视频 | 91精品国啪老师啪 |