C++ 同步
来源:互联网 发布:jsp解析json字符串 编辑:程序博客网 时间:2024/04/30 00:58
#include<semaphore.h>
sem_t abc //申请一个叫abc的semaphore变量
int sem_init (sem_t *sem, int pshared, unsigned int value); // 初始化;第一个参数即为要初始化的sem_t变量,第二个参数为0即表示为当前进程的局部信号量,不应用于其 他进程,第三个即为信号量初值设置
首先需要用sem_init(); 初始化sem_t型变量,并设置初始信号量。比如设置为1即变为互斥锁;
调用sem_wait(sem_t *); 信号量减一,即P操作
调用sem_post(sem_t *); 信号量加一,即V操作
当信号量为0时,调用sem_wait(); 函数阻塞,等待信号量 >0 时,才进行。
#include<semaphore.h>#include<stdio.h>#include<pthread.h>using namespace std;sem_t abc1; //设置为10 sem_t abc2; //设置为0 sem_t mutex; //互斥变量,设为1 int num=0; void* tprocess1(void* args) { while(1){ sem_wait(&abc1); sem_wait(&mutex); num++; printf("跑出%d只兔兔\n",num); sem_post(&mutex); sem_post(&abc2); } return NULL; } void* tprocess2(void* args) { while(1){ sem_wait(&abc2); sem_wait(&mutex); printf("亲一下,一只兔兔满足的走了\n"); num--; printf("还剩%d只兔兔\n",num); sem_post(&mutex);sem_post(&abc1); } return NULL; } int main() { pthread_t t1; pthread_t t2; sem_init(&abc1,0,10); sem_init(&abc2,0,0); sem_init(&mutex,0,1); pthread_create(&t1,NULL,tprocess1,NULL); pthread_create(&t2,NULL,tprocess2,NULL); pthread_join(t1,NULL); pthread_join(t2,NULL); return 0;}
0 0
- C#lock线程同步
- C# 线程同步问题
- c#socket同步通信
- Linux C线程同步
- C/C++线程同步
- linux c 线程同步
- C语言 同步 异步
- C-多线程读写同步
- C++【线程同步】-临界区同步
- 汇编和 c同步使用
- Linux C 线程同步实例
- 文件夹同步 c#(免费下载)
- C#.NET中的同步策略
- 多线程(C++)同步Semaphore
- 多线程(C++)同步Mutex
- 多线程(C++)同步Semaphore
- 多线程(C++)同步Mutex
- c-多线程同步的问题
- J
- cqoi2015网络吞吐量(bzoj3931,洛谷3171)
- 2016网易校招——比较重量(图的广度优先搜索)
- 第一次玩博客
- Java开发岗位面试题归类汇总五:开源框架
- C++ 同步
- 算法训练 最短路
- Akka,并发,Actor
- Javascript数据结构算法之散列(霍纳算法,开链法,线性探测-寻址法)
- 八大排序算法
- Bzoj 4517: [Sdoi2016]排列计数(排列组合)
- 【设计模式】 工厂方法模式(Factory Method)-最易懂的设计模式解析
- 蓝桥杯模拟赛--风险度量--并查集
- react 生命周期