我正在嘗試一個簡單的程序來測試多線程。我只是在備用線程中打印一系列「x」和「O」。現在,如果我使用cout,屏幕上不會顯示任何輸出。如果我使用fputc並輸出到stderr,它可以正常工作。爲什麼cout(輸出到stdout)不在這裏工作?下面爲什麼cout不能與pthreads一起使用?
我的代碼給出:
#include <iostream>
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
using namespace std;
static int count;
void* print_xs(void *unused)
{
while(1)
{
if (count >=100) break;
if (count%2==0)
{
count++;
cout<<"X="; // no output here
fputc('X',stderr); // works !
}
else
{
sleep(1);
}
}
return NULL;
}
int main()
{
pthread_t tid;
pthread_create(&tid,NULL,&print_xs, NULL);
while(1)
{
if (count >=100) break;
if (count%2!=0)
{
count++;
cout<<"O="; // no output here
fputc('O',stderr); // works !
}
else
{
sleep(1);
}
}
pthread_join(tid,NULL);
return (0);
}
你嘗試'沖洗''std :: cout'? – Jarod42
請嘗試打印到'stdout'。 –
@Nawaz std :: cout是線程安全的。 – Galik