前端时间下班临走前看到同事做尝试的一个题目:如何让两个线程交替打印整数1-100?

好几年没有写代码玩了,想了想,花了十多分钟写了个答案:

#include<stdio.h>
#include <pthread.h>
#include <stdlib.h>#include<stdio.h>
#include <pthread.h>
#include <stdlib.h>#include<stdio.h>
#include <pthread.h>
#include <stdlib.h>static int index=1;void* t1(void* context) {while(index < 100) {if (index & 0x1L) {printf("t1 %d\n", index);__sync_fetch_and_add(&index, 1);} else {usleep(0);}}
}void* t2(void* context) {while(index < 100) {if (!(index & 0x1L)) {printf("t2 %d\n", index);__sync_fetch_and_add(&index, 1);} else {usleep(0);}}
}int main() {pthread_t tid1, tid2 ;pthread_create(&tid1, NULL,t1,NULL);pthread_create(&tid2, NULL,t2,NULL);pthread_join(tid1,NULL);pthread_join(tid2,NULL);return 0;
}

晚上回家想了想,第二天又写了个答案,利用Linux的线程优先级0-99,通过控制线程优先级来保证打印顺序,代码找不到了,这里不帖了。同事是JAVA玩家,跟我这老派C/C++选手的思路截然不同^_^

转载于:https://www.cnblogs.com/dskit/p/9943388.html

如何让两个线程交替打印整数1-100?你的答案呢?相关推荐

  1. Java常见的面试算法题:实现两个线程交替打印1到100的数

    Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...

  2. 线程打印_面试题:用程序实现两个线程交替打印 0~100 的奇偶数

    作者:dadiyang来源:https://blog.csdn.net/dadiyang/article/details/88315124 面试场景 面试官:Java多线程了解吗?你给我写一下,起两个 ...

  3. 使用Java线程并发库实现两个线程交替打印的线程题

    背景:是这样的今天在地铁上浏览了以下网页,看到网上一朋友问了一个多线程的问题.晚上闲着没事就决定把它实现出来. 题目: 1.开启两个线程,一个线程打印A-Z,两一个线程打印1-52的数据. 2.实现交 ...

  4. java让两个线程交替_java两个线程实现: 两个线程交替打印字母和数

    两个线程交替打印字母和数字: 1A2B3C4D5E6F7G public class LockConditionTest { public static void main(String[] args ...

  5. 线程打印_经典面试题——两个线程交替打印奇数和偶数

    前提 今天下班时候和同事聊天偶然听到面试题"两个线程交替打印奇数和偶数"的实现,这里做一个复盘. 复盘 场景一:线程A打印奇数,线程B打印偶数,线程A和线程B交替打印,使用对象监视 ...

  6. Java两个线程交替打印奇偶数(两种方法对比)

    简介 本文将承接文章<Java多线程wait()和notify()系列方法使用教程>,我们将通过"两个线程交替打印100内的奇偶数",来展示下wait()方法和noti ...

  7. java go多线程:两个线程交替打印 0~100 的奇偶数

    最近在实现raft算法,用到了很多go的高并发的知识,看到一道题写两个线程交替打印 1~100 的奇偶数,突然来了兴趣. 题目要求我们要启动两个线程,一个打印奇数,一个打印偶数.中途不能跳出协程. 代 ...

  8. c语言利用线程交替打印奇偶数,两个线程交替打印奇偶数

    序言 以前看过多线程交替打印奇偶数,知道大概怎么写,实际写的时候会卡住,特此记录下来 方法一:wait, notify,性能较差,不推荐使用 public class TestThread { pub ...

  9. lock交替打印_面试题Synchronized实现两个线程交替打印

    线程之间的通信有很多种方式,使用Synchronized实现两个线程的交替打印,主要是利用Object对象的wait.notify方法,下面来看下代码: 解释一下上面的程序,首先定义一个内部类,实现s ...

最新文章

  1. P6134 [JSOI2015]最小表示(拓扑排序递推 + bitset优化,可达性统计变种)
  2. Java类的连接与初始化 (及2013阿里初始化笔试题解析)
  3. Web Bundler CheatSheet, 选择合适的构建打包工具
  4. Java对象容器——顺序容器及常用方法
  5. Qt程序打包发布方法(使用官方提供的windeployqt工具)
  6. Windows单机配置Kafka环境
  7. 动态规划 HDU1231-------最大连续子序列
  8. Python开发基础-day1
  9. 连续七天熬夜3D建模师终于出手,让老板增加薪资待遇,3D建模初学者的4个技巧
  10. c字符串分割成数组_数组与字符串
  11. HDU 5455 Fang Fang(模拟)
  12. 360全景倒车影像怎么看_360全景倒车影像真的很有用?水分有多少!
  13. 9:中文乱码处理-Java Web
  14. 10bit、8bit色彩深度的区别
  15. load_weights` requires h5py when loading weights from HDF5
  16. FreeBSD+XP双系统
  17. 模拟信号拉线位移编码器是如何来校准的?
  18. 手机cpu什么型号支持鸿蒙系统,华为鸿蒙2.0系统支持的手机型号(图文)
  19. 电蚊拍一天用30-50次?
  20. 英语口语学习文章分享

热门文章

  1. 《设计模式之禅》--摘要
  2. mybatis log4j2配置
  3. 使用HttpClient 调用Web Api
  4. 简单谈谈select, iocp, epoll,kqueue及各种I/O复用机制
  5. Python中写一个乒乓球类的游戏
  6. Codeigniter分页类代码实例
  7. centos7安装gitlab7.5.0
  8. C# 从DataTable中取值
  9. NAC、NAP及TNC安全接入技术对比分析
  10. mysql两台服务器怎么做数据同步_让两台服务器的MySQL数据同步(互为主从关系)...