信号量同步线程

 1 #include <stdio.h>
 2 #include <pthread.h>
 3 #include <semaphore.h>
 4 
 5 #define UPBOUND 100
 6 
 7 sem_t sem1;
 8 sem_t sem2;
 9 
10 //int i=0;
11 
12 void *threadfunc1(void *p)
13 {
14     int i=0;
15     while(i<100)
16     {
17         sem_wait(&sem1);
18         i++;
19         printf("111 thread i is %d\n",i);
20         sem_post(&sem2);
21     }
22     return NULL;
23 }
24 
25 
26 void *threadfunc2(void *p)
27 {
28     int i=0;
29     while(i<100)
30     {
31         sem_wait(&sem2);
32         i++;
33         printf("222 thread i is %d\n",i);
34         sem_post(&sem1);
35     }
36     return NULL;
37 }
38 
39 int main()
40 {
41    sem_init(&sem1, 0, 1);            //线程间共享,初值为1
42    sem_init(&sem2, 0, 0);
43 
44    pthread_t tid1=0, tid2=0;
45 
46    pthread_create(&tid1,NULL,&threadfunc1,NULL);
47    pthread_create(&tid2,NULL,&threadfunc2,NULL);
48 
49    pthread_join(tid1,NULL);
50    pthread_join(tid2,NULL);
51 
52    sem_destroy(&sem1);
53    sem_destroy(&sem2);
54    
55    return 0;
56 }    

 

posted @ 2016-10-28 14:34  navas  阅读(160)  评论(0编辑  收藏  举报