多线程按照线程顺序打印字符
2016-04-01 13:51
344 查看
#include <stdio.h> #include <pthread.h> #include <unistd.h> int num = 0; pthread_mutex_t mutex_lock = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond_ready = PTHREAD_COND_INITIALIZER; void *output_chara(void *arg) { int i; int cond_num = (int) arg; for (i = 0; i < 10; i++){ pthread_mutex_lock(&mutex_lock); while (num != cond_num){ pthread_cond_wait(&cond_ready, &mutex_lock); } printf("%c", 'A' + cond_num); num = (num + 1) % 3; pthread_mutex_unlock(&mutex_lock); pthread_cond_broadcast(&cond_ready); } } int main() { int i; pthread_t tid[3]; for (i = 0; i < 3; i++){ pthread_create(&tid[i], NULL, output_chara, (void *)i); } for (i = 0; i < 3; i++){ pthread_join(tid[i], NULL); } return 0; }
output:
ABCABCABCABCABCABCABCABCABCABC
相关文章推荐
- Given an unsorted integer array, find the first missing positive integer.
- 规范Python程序配置文件读写
- Zookeeper全解析——Paxos作为灵魂
- 用户手势检测-GestureDetector使用详解
- 后端知识体系--一次完整的HTTP请求
- PopupListView(ListView的Item点击弹出和退回到原来位置)
- 最简单的基于FFmpeg的libswscale的示例
- 从头学习JAVA(三)
- springMVC + hadoop + httpclient 文件上传请求直接写入hdfs
- 二叉查找树转化为双向链表
- 从业十余年谈谈对dotnet看法与坚持
- HTTP请求
- j2se方法
- Python中的threading
- PhotoSwipe简介
- eclipse创建可以导入MyEclipse的工程
- iOS 9 by Tutorials 笔记(十三)Testing
- GPRS模块在Linux平台上ppp拨号上网总结与心得
- Windows不要使用记事本编辑文本文件
- 【笔记】 《js权威指南》- 第3章 类型、值和变量 - 3.10 变量作用域