Linux 多线程printf打印问题
本人创建三个线程一个主线程(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打印信息的不同为什么影响了线程之间的调度?