三个线程,依次打印

这篇博客介绍了如何通过编程实现三个线程ABC顺序打印,利用信号量S1, S2, S3进行同步控制,确保线程按顺序执行。在VS 2015中,需要调用Windows API,而在Linux环境下则使用POSIX线程API。文中提供了信号量初始化、增加、等待等相关函数的说明,并探讨了不使用信号量时的一种递归线程创建方案。" 127371040,7460002,Android P分区变化:odmdtbo与dtbo的区别,"['Android开发', 'Android Studio', 'IDE', '设备配置']
摘要由CSDN通过智能技术生成

编程实现三个线程ABC,并让它们顺次打印ABC

来源:牛客网的BAT经典面试题

思路:设置三个信号量:S1, S2, S3,S2由S1 post,S3由S2 post, S1由S3 post,由A线程先开始打印,其他线程必然在等待信号量,所以三个线程一定会按照信号量的顺序来打印。

注意vs 2015中多线程使用要调用windows下的API。一般在Linux下用操作系统中讲到的POSIX那一套。

代码实现:

/*
 * 3个线程逐个执行打印,线程依次控制下一个线程的信号量
 */
#include <stdio.h>
#include <sys/types.h>
#include <semaphore.h>
#include <pthread.h>

sem_t sem_id1, sem_id2, sem_id3;

void * func1(void *);
void * func2(void *);
void * func3(
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值