我看到有人在與我一起工作的大量多線程,多進程應用程序系統的某些部分執行此操作。它似乎是圍繞調試線:在UNIX系統上調用睡眠(0)的效果是什麼?
std::cerr << "DEBUG: Reaching: " << __FUNCTION__ << " @ " << __LINE__ << std::endl;
sleep(0);
如果我宏出睡眠(0); (即將其更改爲「」),系統的調試輸出似乎以不同的順序排列(不太可預測),所以我認爲它會使線更早出現 - 但我認爲std :: cerr是無緩衝的,而std: :無論如何,endl調用std :: flush(),那爲什麼會這樣?
我正要告訴你閱讀手冊頁,但是我先閱讀了它,並沒有回答這個問題。 –
窮人的pthread_yield? – Nemo
@Nemo,差不多。這實際上是整個重量級過程的產量;控制權返回到進程調度程序。 –