多线程按序输出字符
来源:互联网 发布:知乎app电脑版 编辑:程序博客网 时间:2024/04/29 19:36
题目:
有三个线程分别打印字符A、B和C,要求按照ABC这样的顺序一直打印字符,形成ABCABCABC........
需要使用信号量进行处理,源代码如下
#include <stdio.h>#include <pthread.h>#include <semaphore.h>#include <string.h>#include <stdlib.h>void* pt1(void* arg);void* pt2(void* arg);void* pt3(void* arg);sem_t s[3]; int main() {sem_init(&s[0], 0, 1);sem_init(&s[1], 0, 0);sem_init(&s[2], 0, 0);pthread_t pid[3];pthread_create(&pid[0], NULL, pt1, NULL);pthread_create(&pid[1], NULL, pt2, NULL);pthread_create(&pid[2], NULL, pt3, NULL);int i;for(i=0; i<3; i++)pthread_join(pid[i], NULL);return 0;} void* pt1(void* arg) {while(1) {sleep(1);sem_wait(&s[0]);printf("A");fflush(stdout);sem_post(&s[1]);}}void* pt2(void* arg) {while(1) {sleep(1);sem_wait(&s[1]);printf("B");fflush(stdout);sem_post(&s[2]);}}void* pt3(void* arg) {while(1) {sleep(1);sem_wait(&s[2]);printf("C");fflush(stdout);sem_post(&s[0]);}}
0 0
- 多线程按序输出字符
- 多线程 奇数偶数按序输出 自学自用
- 多线程按序执行
- Java多线程-线程按序交替
- 一组数字的全排列按序输出
- 【多线程】在显示屏上输出各种字符
- 学生信息按序输出 冒泡排序 C++变量引用
- 非递归,按序输出集合的全排列
- 非递归,按序输出集合的全排列
- UVA 796 - Critical Links (求桥按序输出)
- 不改变数组原有顺序按序输出数组
- 多线程条件下打印日志--解决输出字符被间断
- POJ 1731 Orders 按序输出一个字符串的全排列 next_permutation()
- 第四题 构建 二元查找树 然后将节点变为排序的链表按序输出
- UVA 156-Ananagrams(字符串排序按序输出无重复单词)
- 乱序数列按序输出 (4.2阿里C++机试最后一题)()
- 初学C语言:比较交换3个实数值大小,并按序输出
- 输入一组数字,统计每个数字的个数后按序输出
- 2016年7月18日 (Activity四种显示方式,popwindow和dialog的区别)
- UVA 12716 GCD XOR (数论,规律)
- STM32之RCC库函数介绍以及应用
- jQuery选择器总结
- CodeForces 722B Verse Pattern
- 多线程按序输出字符
- 第九次总结
- Qt打包发布教程
- ArrayList根据指定条件移除元素和去重(java)
- Android获取一周每一天的日期
- 2016年7月14月(欢迎界面、引导界面)
- nginx 与 CAS、Client项目 整合出现问题解决方案
- shell面试题目
- HDU 5384 Danganronpa 多个串的ac自动机