我正在學習Linux平臺中的多線程。我寫了這個小程序,以獲得舒適的概念。在運行可執行文件時,我看不到任何錯誤,也不打印Hi
。因此,我看到輸出後就讓睡覺了。但仍然無法看到控制檯上的打印件。Linux多線程 - 線程不會按預期產生任何輸出
我也想知道在運行時打印哪個線程。誰能幫我?
#include <iostream>
#include <unistd.h>
#include <pthread.h>
using std::cout;
using std::endl;
void* print (void* data)
{
cout << "Hi" << endl;
sleep(10000000);
}
int main (int argc, char* argv[])
{
int t1 = 1, t2 =2, t3 = 3;
pthread_t thread1, thread2, thread3;
int thread_id_1, thread_id_2, thread_id_3;
thread_id_1 = pthread_create(&thread1, NULL, print, 0);
thread_id_2 = pthread_create(&thread2, NULL, print, 0);
thread_id_3 = pthread_create(&thread3, NULL, print, 0);
return 0;
}
此外,你意識到你讓它睡了100多天,對吧? – AntonH
睡100天沒什麼問題。我每天晚上都做。 –
的確如此,但我一直在考慮操作系統可能不會刷新緩衝區並打印「Hi」,然後OP會終止程序,因此無法打印。 – AntonH