- 论坛徽章:
- 0
|
本帖最后由 jmjgemini 于 2012-11-01 16:11 编辑
主线程输出1,新建一个线程输出2,用信号量让两个线程互相等待,但是不知道为什么结果就是会有的时候输出很多1,有的时候输出很多2~
才学这个,不是太懂- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <pthread.h>
- #include <semaphore.h>
- sem_t *sem_ptr1;
- sem_t *sem_ptr2;
- void *thread_function(void *arg);
- int main()
- {
- pthread_t my_thread;
- int res;
- sem_ptr1 = sem_open("sem_1",O_CREAT,S_IRUSR|S_IWUSR,0);
- sem_ptr2 = sem_open("sem_2",O_CREAT,S_IRUSR|S_IWUSR,1);
- if (sem_ptr1 == SEM_FAILED || sem_ptr2 ==SEM_FAILED)
- {
- perror("Semaphore initiqlization failed");
- exit(EXIT_FAILURE);
- }
- res = pthread_create(&my_thread,0,thread_function,0);
- if (res != 0)
- {
- perror("Can not open thread");
- exit(EXIT_FAILURE);
- }
- while(1)
- {
- sem_wait(sem_ptr2);
- write(STDOUT_FILENO,"1",1);
- sem_post(sem_ptr1);
- }
- sem_close(sem_ptr1);
- sem_close(sem_ptr2);
- sem_unlink("sem_1");
- sem_unlink("sem_2");
- exit(EXIT_SUCCESS);
- }
- void *thread_function(void *arg)
- {
- while(1)
- {
- sem_wait(sem_ptr1);
- write(STDOUT_FILENO,"2",1);
- sem_post(sem_ptr2);
- }
- }
复制代码 |
|