Linux 多线程printf打印问题

sjoy1_ sjoy1_ 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
本人创建三个线程一个主线程(main thread),一个读线程(read thread),一个写线程(write thread),主线

程设置一个每隔20ms往控制台打印信息定时器,读写各设置了每10ms往控制台打印定时器。
(1)打印信息如下:
(main thread:打印信息)printf("main thread takes time %fms;main_count:%d\n",main_time,main_count);
(write thread:打印信息)printf("write thread takes time: %fms;write_count:

\n",write_time,write_count);
(read thread:打印信息)printf("read thread takes time: %fms;read_count:%d\n",read_time,read_count);
执行结果如下:
main thread takes time 0.387614ms;main_count:686
read thread takes time: 0.003221ms;read_count:1371
read thread takes time: 0.003324ms;read_count:1372
read thread takes time: 0.003457ms;read_count:1373
read thread takes time: 0.003283ms;read_count:1374
read thread takes time: 0.005277ms;read_count:1375
write thread takes time: 0.002437ms;write_count:1371
write thread takes time: 0.002410ms;write_count:1372
write thread takes time: 0.002386ms;write_count:1373
read thread takes time: 0.003541ms;read_count:1376
read thread takes time: 0.002902ms;read_count:1377
read thread takes time: 0.004840ms;read_count:1378

(2)打印信息如下
(main thread:打印信息)printf("main thread\n");
(write thread:打印信息)printf("write thread\n");
(read thread:打印信息)printf("read thread\n");
执行结果如下:
main thread
read thread
write thread
read thread
write thread
main thread
read thread
write thread
read thread
write thread
main thread
read thread
write thread
read thread
write thread
main thread
read thread
write thread
read thread
write thread
main thread
read thread
write thread
read thread
write thread
main thread
read thread
write thread
read thread
write thread
main thread
read thread
write thread
read thread
write thread
第二种执行结果正确,printf打印信息的不同为什么影响了线程之间的调度?
...全文
评论 1
收藏 已收藏
分享
返回顶部
sjoy1_
Linux/Unix社区 23,224 成员 74,535 内容