博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程相关函数(7)-sem_post(), sem_wait() 信号量
阅读量:6037 次
发布时间:2019-06-20

本文共 1005 字,大约阅读时间需要 3 分钟。

sem_t

sem_init
sem_wait
sem_trywait
sem_timedwait
sem_post
sem_destroy

生产者消费者实例:

#include 
#include
#include
#include
#define NUM 5int queue[NUM];sem_t blank_number, product_number; void *producer(void *arg){  int p = 0;  while (1) {    sem_wait(&blank_number);    queue[p] = rand() % 1000 + 1;    printf("Produce %d\n", queue[p]);    sem_post(&product_number);    p = (p+1)%NUM;    sleep(rand()%5);  } } void *consumer(void *arg){  int c = 0;  while (1) {    sem_wait(&product_number);    printf("Consume %d\n", queue[c]);    queue[c] = 0;      sem_post(&blank_number);    c = (c+1)%NUM;    sleep(rand()%5);  }} int main(int argc, char *argv[]){  pthread_t pid, cid;  sem_init(&blank_number, 0, NUM);  sem_init(&product_number, 0, 0);  pthread_create(&pid, NULL, producer, NULL);  pthread_create(&cid, NULL, consumer, NULL);  pthread_join(pid, NULL);  pthread_join(cid, NULL);  sem_destroy(&blank_number);  sem_destroy(&product_number);  return 0;}

 

转载地址:http://zdlhx.baihongyu.com/

你可能感兴趣的文章
百度编辑器(ueditor)不支持上传图片到独立服务器?
查看>>
监控利器Nagios之二:Nagios的细致介绍和监控外部服务器的私有信息
查看>>
IntelliJ IDEA的几种常见的快捷键
查看>>
一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-涉及的数据定义
查看>>
分别写出有符号和无符号1字节,2字节,4字节所能表示的整数范围
查看>>
告别纯烧钱运营模式 “生态充返”打响易到生态化反第一战
查看>>
linux内核的优先级继承协议(pip)和μC/OSII 2.52内核的优先级置顶协议(pcp)
查看>>
用HAproxy+keepalived+mysql Replication 构建基于企业级负载均衡
查看>>
安全扫描器工具
查看>>
IIS日志删除脚本
查看>>
一道shell题,perl解法
查看>>
只允许特定的组用户su切换到root
查看>>
Win7中用Windows Photo Viewer打印图片
查看>>
也许Delphi就这样远去
查看>>
cvsacl 控制cvs的用户权限
查看>>
Fork 系统炸弹
查看>>
科普系列之-使用Windows的NTFS保护你的敏感数据
查看>>
Windows Phone 实用开发技巧(28):图片缓存
查看>>
Weave Scope 容器地图 - 每天5分钟玩转 Docker 容器技术(80)
查看>>
SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY
查看>>