不得不说今天又遇到了一件坑爹的事情,linux下用多线程实现答应ABBABBABBABBABB....代码如下:红色部分为啃爹的部分!
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- sem_t sem;
- void *thrd_fun1(void *arg)
- {
- int thrd_num=(int)arg;
- while(1)
- {
- printf("A\n");//当驱动\n换行符会出现程序卡死现象,目前还不清楚为什么!
- sem_post(&sem);
- sleep(2);
- }
-
- pthread_exit(NULL);
- }
- void *thrd_fun2(void *arg)
- {
- int thrd_num=(int)arg;
- int i;
- while(1)
- {
- sem_wait(&sem);
- printf("B\n");
- sleep(1);
- printf("B\n");
- sleep(1);
- }
- pthread_exit(NULL);
- }
- int main(void)
- {
- pthread_t thread[2];
- int no=0,res;
- void *thrd_ret;
- sem_init(&sem,0,0);
- res=pthread_create(&thread[0],NULL,thrd_fun1,(void*)no);
- if(res!=0)
- {
- printf("Create thread 1 failed\n");
- exit(res);
- }
- res=pthread_create(&thread[1],NULL,thrd_fun2,(void*)no);
- if(res!=0)
- {
- printf("Create thread 1 failed\n");
- exit(res);
- }
- for(no=0;no<2;no++)
- {
- res =pthread_join(thread[no],&thrd_ret);
- if(!res)
- {
- printf("Thread %d exit\n",no);
- }
- else
- {
- printf("Thread %d exit failed\n",no);
- }
- }
- return 0;
- }
阅读(2506) | 评论(0) | 转发(0) |