Linux下的執行緒內的遇 n才會列印該怎麼辦

2021-10-23 05:06:08 字數 1054 閱讀 5082

​ 今天建立pthread執行緒,內部進行除錯,發現執行緒內的\n列印不了的情況。

現象描述:等待十秒鐘後,才會列印出一大串的1**2****…集體列印。

#include#include#includevoid * threadfunc(void *arg)

}int main(int argc, const char *ar**)

return 0;

}

​ 但是當每條列印資訊加入\n以後,就發現會每隔1s列印

************1***********

************2***********

​ 不知道是否將資料存入了緩衝區,遇到了"\n"以後才會將資料列印出來,從沒有碰到過這種狀況。但是之前的程式還是會執行下來。

​ 那麼接下來,我使用了流緩衝fflush(stdout)標準輸出將資料刷出來

void * threadfunc(void *arg)

}int main(int argc, const char *ar**)

return 0;

}

​ 哈哈,那麼列印資料就被刷出來了。

linux@linux:~/pthread$ g++ 1_pthread_create.cpp  -lpthread

linux@linux:~/pthread$ ./a.out

************1***********************2***********************1***********************2***********************1***********************2***********************1***********************2***********************1***********************2***********^c

​ 1.可以通過列印輸出語句加入\n

​ 2.使用fflush函式

linux下的執行緒(二)

清除 執行緒終止有兩種情況 1 正常終止 2 非正常終止 1 正常終止 執行緒主動呼叫pthread exit或者從執行緒函式中return都將使執行緒正常退出,這是可預見的退出方式 2 非正常終止 執行緒在其他執行緒的干預下,或者由於自身執行出錯 比如訪問非法位址 而退出,這種退出方式是不可預見的...

Linux下的執行緒安全

linux下的執行緒安全 原文結構有點亂 原理 保證同一時間只有乙個執行流對臨界資源進行訪問。即 對臨界資源進行標記,無訪問時標記為1,有訪問時標記為0,當標記為1時,則使用者可訪問或執行緒可訪問 當標記為0時,執行緒不可訪問。先進行判斷,能訪問則訪問,不能訪問則休眠。mutex 是乙個計數器。互斥...

Linux下多執行緒的執行緒保護

目錄 一 開發環境 二 互斥鎖 系統 ubuntu16.04 執行緒庫 pthread 語言 c c linux下的執行緒保護,最常用的是互斥鎖 條件變數 訊號量和讀寫鎖。先來試一下互斥鎖吧 多執行緒之間可能需要互斥的訪問一些全域性變數,這就需要互斥的來訪問,這些需要共享訪問的字段被稱作是臨界資源,...