说明:下面例子代码我采取三次获取信号量值
第一次,获取的是当前线程信号量没减之前的值
第二次,获取的是当前线程信号量值减过一次后的值
第三次,获取的是当前线程信号量值增加一次后的值
重点说明,线程创建是无序的,具体你可以代码结合截图参考
#include <iostream>
#include<pthread.h>
#include<unistd.h>
#include<semaphore.h>
#include<string.h>
using namespace std;
typedef struct _f //包含线程id的结构体,起始不用也可以
{
int pid;
} Node;
sem_t ss; //信号量对象
int sem_num; //保存信号量数值的变量
void*myprinf(void*arg)
{
Node node=*(Node*)arg;
//=============1
sem_getvalue(&ss,&sem_num);//获取当前信号量的值
cout<<"线程id: "<<node.pid<<" sem_num1111: "<<sem_num<<endl;
sem_wait(&ss);//减少信号量的值
//=====&#