把所有的输出printf使用一个互斥的信号量同步一下就行了吧,C的标准库不是线程安全的。
1.声明信号量sem_t sem1
2.初始化信号量sem_init(&sem1,0,1)
3.sem_post和sem_wait函数配合使用来达到线程同步
4.释放信号量int sem_destroy (sem_t *sem1)
不是信号量的问题printf函数,是先写到输出缓冲,遇到\n时,或者缓冲区满时,或者有强制输出(fflush)时,才会将缓冲区里的内容输出到屏幕上(标准输出设备:stdout)。你的代码里面并没有以上3个触发条件的任意一种,所以printf的内存没有实际输出到屏幕上。
你只要在每个printf函数后面加上fflush(stdout)就可以了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)