在学习调试linux的线程测试程序时,发现了一个加换行会实时显示,不加换行则会卡主最后一起显示的情况。一个线程打印1一个线程打印2,间隔着打印
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
void *thread_function(void *arg);
int run_now = 1;
char message[] = "Hello World";
int main() {
int res;
pthread_t a_thread;
void *thread_result;
int print_count1 = 0;
res = pthread_create(&a_thread, NULL, thread_function, (void *)message);
if (res != 0) {
perror("Thread creation failed");
exit(EXIT_FAILURE);
}
while(print_count1++ < 20)
{
if (run_now == 1)
{
printf("1");
run_now = 2;
}
else {
sleep(1);
}
}
printf("\nWaiting for thread to finish...\n");
res = pthread_join(a_thread, &thread_result);
if (res != 0) {
perror("Thread join failed");
exit(

在调试Linux线程程序时遇到一个问题,当线程间交替使用printf不加换行符时,输出会延迟显示。通过在printf中添加换行符(
),可以解决这一缓冲问题,确保输出立即可见。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



