您的位置:首页 > 运维架构 > Linux

linux信号量使用

2016-04-18 23:33 531 查看
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>
#include <stdio.h>

sem_t sem1,sem2;

void func1(char * string){

int i = 0;

while(i<100){

sem_wait(&sem1);

printf("%s\n",string);
i++;

sem_post(&sem2);
  //因为sem2 在 fun2里面被用掉了,并没有post。
  //等fun1输出完成之后,再post,fun2就wait到了sem2,确保了fun1和fun2能交替运行

}

}

void func2(char * string){

int i = 0;

while(i<100){

sem_wait(&sem2);

printf("%s\n",string);
i++;

sem_post(&sem1);

}

}

int main(){

sem_init(&sem1,0,1);
sem_init(&sem2,0,1);

pthread_t tid1,tid2;

pthread_create(&tid1,NULL,(void *)func1,"In A Thread!");
pthread_create(&tid2,NULL,(void *)func2,"In B Thread!");

pthread_join(tid1,NULL);
pthread_join(tid2,NULL);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: