两个线程按顺序打印1~10
来源:互联网 发布:mysql安装步骤 编辑:程序博客网 时间:2024/05/20 23:58
<pre name="code" class="cpp">#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>pthread_mutex_t lock;pthread_cond_t cond;int i = 1;void* salewinds1(void* args){while(1){pthread_mutex_lock(&lock);if(i == 10){pthread_mutex_unlock(&lock);//退出前解锁否则会造成别的线程死锁pthread_exit(0);}while(i % 2 == 0){pthread_cond_wait(&cond, &lock);}printf("%d\n", i);i += 1;if(i > 10){pthread_mutex_unlock(&lock);pthread_exit(0);}pthread_cond_broadcast(&cond);pthread_mutex_unlock(&lock);}return NULL;}void* salewinds2(void* args){while(1){pthread_mutex_lock(&lock);if(i > 10){pthread_mutex_unlock(&lock);pthread_exit(0);}while(i % 2 == 1){pthread_cond_wait(&cond, &lock);}printf("%d\n", i);i += 1;if(i == 10){pthread_mutex_unlock(&lock);pthread_exit(0);}pthread_cond_broadcast(&cond);pthread_mutex_unlock(&lock);}return NULL;}int main(int argc,const char* argv[]){pthread_t thd1;pthread_t thd2;int val1=1;int val2=2;pthread_mutex_init(&lock, NULL);pthread_cond_init(&cond, NULL); pthread_create(&thd1, NULL, salewinds1, NULL);pthread_create(&thd2, NULL, salewinds2, NULL);pthread_join(thd1, (void**)&val1);pthread_join(thd2, (void**)&val2);pthread_mutex_destroy(&lock);pthread_cond_destroy(&cond);return 0;}
0 0
- 两个线程按顺序打印1~10
- 按顺序打印线程
- 写两个线程,一个线程打印1-52,另一个线程打印A-Z,打印顺序为12A34B56C......5152Z。
- 写两个线程,其中一个线程打印1-52,另一个打印A-Z,打印顺序为12A34B56C....5152Z
- 两个线程交替执行,一个打印1-52;一个打印A-Z;打印顺序为12A34B56C.....5152Z
- 写两个线程,一个线程打印1-52,另一个线程打印字母A-Z。打印 顺序为12A34B56C……5152Z
- 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z
- 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z
- Java小题目之两个线程顺序打印A、B
- 三个线程循环的按顺序打印
- 线程顺序打印ABC
- 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。要求用线程间的通信
- 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z。要求用线程间的通信
- 写两个线程,一个线程打印1-52,另…
- 写两个线程,其中一个线程打印1-52,另一个打印A-Z,打印顺序为12A34B56C....5152Z。(《疯狂java讲义》第12章课后题一)
- 用java写两个线程,一个线程打印1-52,另一个线程打印字母A-Z
- 用java写两个线程,一个线程打印1-52,另一个线程打印字母A-Z
- 用java写两个线程,一个线程打印1-52,另一个线程打印字母A-Z
- Android 起步之路
- 嵌套循环连接(Nested Loops), 合并联接(Merge), 哈希联接(Hash)的适用情况
- Servlet 的生命周期
- 如何根治安卓卡顿短板 三星这次有办法
- LaunchImage设置失败的可能原因之一
- 两个线程按顺序打印1~10
- iOS项目开发实战——使用UICollectionView实现瀑布流
- 杭电1008-Elevator
- webview实践
- Grunt入门
- 计数排序
- spring mvc 文件上传+本地预览+一次提交
- 进程、线程知识点随笔
- 测试用例的主要要素