两个线程交替打印ABCDEF
2016-10-09 20:47
337 查看
1. 线程交替打印
2. #include <stdio.h>
3. #include <pthread.h>
4. pthread_mutex_t mu;
5. char ch = 'A';
6. void *mythread1()
7. {
8. int i = 0;
9. for(i = 0;i < 3;)
10. {
11. if(pthread_mutex_lock(&mu) == 0)
12. {
13. printf("1 printf %c\n",ch);
14. ch ++;
15. i ++;
16. pthread_mutex_unlock(&mu);
17. }
18. sleep(1);
19. }
20. }
21.
22. void *mythread2()
23. {
24. int i = 0;
25. for(i = 0;i < 3;)
26. {
27. if(pthread_mutex_lock(&mu) == 0)
28. {
29. printf("2 printf %c\n",ch);
30. ch ++;
31. i ++;
32. pthread_mutex_unlock(&mu);
33. }
34. sleep(1);
35. }
36. }
37.
38.
39. int main()
40. {
41. int i = 0;
42. int ret = 0;
43. pthread_t id1,id2;
44. pthread_mutex_init(&mu,NULL);//init the mutex 创建线程互斥锁
45. pthread_mutex_lock(&mu); //先上锁
46.
47. ret = pthread_create(&id1,NULL,(void *)mythread1,NULL);
48. if(ret)
49. {
50. printf("create 1 error\n");
51. return 1;
52. }
53.
54. ret = pthread_create(&id2,NULL,(void *)mythread2,NULL);
55. if(ret)
56. {
57. printf("create 2 error\n");
58. return 1;
59. }
60. pthread_mutex_unlock(&mu);//解锁等待启动
61. pthread_join(id1,NULL);//等待线程结束
62. pthread_join(id2,NULL);
63. return 0;
}
2. #include <stdio.h>
3. #include <pthread.h>
4. pthread_mutex_t mu;
5. char ch = 'A';
6. void *mythread1()
7. {
8. int i = 0;
9. for(i = 0;i < 3;)
10. {
11. if(pthread_mutex_lock(&mu) == 0)
12. {
13. printf("1 printf %c\n",ch);
14. ch ++;
15. i ++;
16. pthread_mutex_unlock(&mu);
17. }
18. sleep(1);
19. }
20. }
21.
22. void *mythread2()
23. {
24. int i = 0;
25. for(i = 0;i < 3;)
26. {
27. if(pthread_mutex_lock(&mu) == 0)
28. {
29. printf("2 printf %c\n",ch);
30. ch ++;
31. i ++;
32. pthread_mutex_unlock(&mu);
33. }
34. sleep(1);
35. }
36. }
37.
38.
39. int main()
40. {
41. int i = 0;
42. int ret = 0;
43. pthread_t id1,id2;
44. pthread_mutex_init(&mu,NULL);//init the mutex 创建线程互斥锁
45. pthread_mutex_lock(&mu); //先上锁
46.
47. ret = pthread_create(&id1,NULL,(void *)mythread1,NULL);
48. if(ret)
49. {
50. printf("create 1 error\n");
51. return 1;
52. }
53.
54. ret = pthread_create(&id2,NULL,(void *)mythread2,NULL);
55. if(ret)
56. {
57. printf("create 2 error\n");
58. return 1;
59. }
60. pthread_mutex_unlock(&mu);//解锁等待启动
61. pthread_join(id1,NULL);//等待线程结束
62. pthread_join(id2,NULL);
63. return 0;
}
相关文章推荐
- wait,notify实现两个线程交替打印
- 两个线程交替执行,一个打印1-52;一个打印A-Z;打印顺序为12A34B56C.....5152Z
- 使用两个线程交替打印0到100的奇数和偶数
- Java实现两个线程交替打印问题
- 两个线程每隔一秒钟交替打印5个数
- 实现两个线程A,B,A打印5个奇数,B打印5个偶数,交替进行,如此循环50次
- 多线程技术: 两个线程交替打印奇数和偶数
- 两个线程的交替打印
- Java两个线程交替打印(实现Runnable接口)
- 使用Java线程并发库实现两个线程交替打印的线程题
- 多线程技术: 两个线程交替打印奇数和偶数
- linux两个线程交替打印数字
- 面试题一:实现两个线程交替打印数字
- 两个线程交替打印ABABAB
- 使用Java线程并发库实现两个线程交替打印的线程题
- 两个线程交替打印字母 java
- 两个线程交替打印字符串
- 两个线程交替打印ABABAB
- 08 两个线程交替打印121212...
- 两个线程分别打印0-100的之间的奇偶数(两种方式对比)