一个线程和信号量的例子
来源:互联网 发布:养成游戏 知乎 编辑:程序博客网 时间:2024/05/21 17:00
线程中使用信号量好像和互斥差不多
//start from the very beginning,and to create greatness//@author: Chuangwei Lin//@E-mail:979951191@qq.com//@brief: 一个线程和信号量的例子#include <stdio.h>#include <pthread.h>//线程的头文件#include <semaphore.h>void *producter(void *arg);//生产者void *consumer(void *arg);//消费者sem_t i;//信号量int running = 1;//线程运行控制/******************************************************函数名:main函数参数:功能:多线程,信号量*******************************************************/int main(int argc, char const *argv[]){ pthread_t producter_t;//生产者线程控制 pthread_t consumer_t;//消费者线程控制 sem_init(&i,0,100);//信号量初始化为100 pthread_create(&producter_t,NULL,(void*)producter,NULL);//建立生产者线程 pthread_create(&consumer_t,NULL,(void*)consumer,NULL);//建立消费者线程 usleep(1);//等待线程创建完毕 running = 0;//设置线程退出值 pthread_join(producter_t,NULL);//等待生产者线程退出 pthread_join(consumer_t,NULL);//等待消费者线程退出 sem_destroy(&i);//销毁信号量 return 0;}/******************************************************函数名:void *producter(void *arg)参数:功能:生产者函数,使信号量i增加*******************************************************/void *producter(void *arg){ int semval = 0;//获取信号量的值 while(running)//没有设置退出时 { usleep(1); sem_post(&i);//信号量增加 sem_getvalue(&i,&semval);//得到信号量的值 printf("生产者:当前总数量:%d\n",semval); }}/******************************************************函数名:void *consumer(void *arg)参数:功能:消费者函数,使信号量i减少*******************************************************/void *consumer(void *arg){ int semval = 0; while(running)//没有设置退出时 { usleep(1); sem_wait(&i);//使信号量减少 sem_getvalue(&i,&semval);//得到信号量的值 printf("消费者:当前总数量:%d\n",semval); }}
usleep和sleep的区别:
函数名: sleep
头文件: #include
0 0
- 一个线程和信号量的例子
- 一个信号量的例子
- 进程的信号量和线程的信号量
- 一个线程和互斥的例子
- 一个简单的信号量的例子
- 一个简单的Java信号量例子
- vxworks信号量与任务的一个例子
- 一个信号量与定时器的例子(Golang)
- 编程范式:线程和信号量的例子-Thread and Semaphore Examples
- [转]一个很好的Linux共享内存和信号量的例子
- LINUX信号量线程控制例子
- 线程演示生产者和消费者的一个例子
- 一个“线程不安全”的例子
- 线程池的一个例子
- 一个简单的线程例子
- 一个线程死锁的例子
- 一个简单的线程例子
- 一个线程死锁的例子
- 黑马程序员——Java基础--多线程(1)
- linux查看CPU及内存信息
- php调用scp脚本内网传输文件
- 一个线程和互斥的例子
- 使用CSS来设置SVG中Use元素的样式
- 一个线程和信号量的例子
- java中的IO操作
- hdoj 4753 博弈+搜索
- 使用sublime text 3 搭建轻量级C/C++编辑/编译器
- 在Node.js中使用promise摆脱回调金字塔
- NZND壳-加密算法
- 黑马程序员——C语言笔记之结构体以及枚举
- 两个对象值相同,有相同的hash code
- Android Studio 死机问题