多线程依次打印abcabc
网络原题:
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输
出结果必须按ABC的顺序显示;如:ABCABC….依次递推
这里设置ITEM=4,即依次打印ABCDABCD……………………
#include <stdio.h> #include <stdlib.h> #include<pthread.h> /*int pthread_create(pthread_t*restrict tidp,* const pthread_attr_t *restrict_attr,* void*(*start_rtn)(void*),void *restrict arg);*/ /*第一个参数为指向线程标识符的指针。 第二个参数用来设置线程属性。 第三个参数是线程运行函数的起始地址。 最后一个参数是运行函数的参数。*/ #define ITEM 4 struct {pthread_mutex_t mutex;pthread_cond_t cond;int i; }test={PTHREAD_MUTEX_INITIALIZER,PTHREAD_COND_INITIALIZER,0 }; void PrintA(void *arg) {int num=*(int*)arg;int i;//printf("\n线程%d开始工作,我打印的是%c\n",pthread_self(),'A'+num);for(i=0;i<10;i++){pthread_mutex_lock(&test.mutex);while(test.i!=num)pthread_cond_wait(&test.cond,&test.mutex);printf("%c",'A'+num);test.i=(test.i+1)%ITEM;pthread_mutex_unlock(&test.mutex);pthread_cond_broadcast(&test.cond);}//printf("\n线程%d完成任务\n",pthread_self()); } int main(void) {pthread_t t[ITEM];int i=1;printf("共有%d个线程\n",ITEM);for(i=0;i<ITEM;i++){int *a=(int *)malloc(sizeof(int));*a=i;pthread_create(&t[i],NULL,PrintA,a);}for(i=0;i<ITEM;i++){pthread_join(t[i],NULL);}return EXIT_SUCCESS; }
运行结果:
共有4个线程 ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD
转载于:https://www.cnblogs.com/sklww/p/3492997.html
多线程依次打印abcabc相关推荐
- linux多线程顺序打印abc,c++11 多线程依次打印ABC
并发 练习代码 #include #include #include #include using namespace std; std::mutex mtx; std::condition_vari ...
- java多线程循环打印abc,使用java多线程顺序打印“ABCABC”
一.几个基本概念的区分 1.进程与程序的区分 程序 进程 包含代码部分.数据部分 包含代码部分.数据部分.进程控制块 顺序执行 并发执行 独占资源 共享资源 同步的 异步的 静态的 动态的 (本质区别 ...
- Linux编程题:信号量同步三进程依次打印若干次ABC
三个进程依次打印ABC..... 思路及大致流程如下: 思路取自这位大哥: Linux编程题:创建3个线程分别打印abc,用信号量进行同步_cleverlemon的博客-CSDN博客 这位大哥写的是线 ...
- java多线程交替打印_java实现多线程交替打印
本文实例为大家分享了java实现多线程交替打印的具体代码,供大家参考,具体内容如下 notify+wait实现 import org.junit.Test; import java.util.conc ...
- 多线程顺序打印的5种解法
多线程同步的方式有许多,有传统的synchronized锁,还可以使用lock锁,下面列举多线程顺序打印的5种解法,算作对线程同步的一个总结. 文章目录 经典面试题 多种解法 使用 Lock 使用 w ...
- java同时启动多个 无法打印_java实现多线程交替打印两个数
本文实例为大家分享了java实现多线程交替打印两个数的具体代码,供大家参考,具体内容如下 方法1.使用wait和notify package com.thread; public class T01 ...
- java多线程交替打印abc
你可以使用 synchronized 和 wait / notify 来实现多线程交替打印abc. 以下是一个示例代码: public class PrintABC {private intstate ...
- LeetCode 多线程 1116. 打印零与奇偶数
1116. 打印零与奇偶数 Ideas 有几个线程就用几个信号量,最先开始的信号量初始化为1,其它初始化为0,然后根据条件判断实现同步. 多线程的问题好多都是:锁自己,解锁别人. Code from ...
- 阿里最喜欢问的多线程顺序打印的5种解法!
Keeper导读 大家在换工作面试中,除了一些常规算法题,还会遇到各种需要手写的题目,所以打算总结出来,给大家个参考. 全文 2929 字,剩下的是代码,P6 及以下阅读只需要 8 分钟,高 P 请直 ...
最新文章
- python一次性输入10个数_python如何一次性输入多个数
- POI异步导入Excel兼容xsl和xlsx
- OpenCASCADE:Foundation Classes使用句柄编程
- LevelDB 之 arena
- 130701基础练习-first
- php 网站域名怎么更换,教你如何快速给网站更换域名,简单粗暴!
- 网页中使用的特殊字体(webdings, wingdings 2)
- SuseLinux详解(2)——网络设置静态IP 网关 DNS的方法
- http://www.blogjava.net/heyang/archive/2010/12/02/
- 流媒体服务器设计文档,流媒体服务器设文档.doc
- 微信支付v3 php 源码,求微信支付wxpayv3服务端完整代码
- HTML中播放提示音
- 四叶草关闭啰嗦模式_教你如何解决 Win7 64位卡LOGO(四叶草)
- adobe pdf for linux,Linux PDF阅读软件Adobe Reader 9.5.5发布( for linux)
- php excel 高度,PHPExcel,自动调整行高
- 解忧云SMS短信服务平台系统 短信发送系统源码 全解密随时可以二开无后门
- 2个大厂 100亿级 超大流量 红包 架构方案
- 程序员常用刷题网站分享
- 目标检测(四):SSD之Pytorch源码解读
- java的含义是什么
热门文章
- POI导入数据的过程中,遇到读取以科学计数法显示的数据
- 使用C#控制远程计算机的服务[转]
- c++ 课程设计之车票管理系统
- Ecipse:calculating requirements and dependencies(长时间阻塞问题)
- 将视频抽取成图片,并对图片进行批量命名opencv代码
- 计算机体系结构在线读,计算机体系结构new.ppt
- (8)VTK 鼠标左右键控制模型旋转
- mysql存储过程 begin_MySQL存储过程的BEGIN和END
- cmp linux 命令,比较文件Linux基本命令:cmp
- openim php sdk,imsdk_restapi-php-sdk