Linux 多线程printf打印问题

sjoy1_ 2015-07-20 07:17:32
本人创建三个线程一个主线程(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打印信息的不同为什么影响了线程之间的调度?
...全文
517 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
一群人的拼搏 2015-07-20
  • 打赏
  • 举报
回复
影响是正常的呀! 你的打印输出事件依据输出量而造成事件延迟等问题! 你可以试着第二个出加上这样一个函数delay(500)试试! 估计就会出现和上面差不多效果的样子!

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧