我在寫一個使用POSIX線程庫的程序。我執行系統調用的一些返回值,如:在多線程程序中退出程序
if (pthread_join(temp, NULL) != 0) {
cerr << "system error\n" << endl;
exit(1);
}
我希望程序當CPU決定切換到不同的狀態,如果它通過這個時候馬上退出,但有可能是一個問題在'exit(1)'命令之前進行線程。
有沒有辦法保護這種情況?
使用一個特殊的互斥體對此沒有幫助,因爲: 1.我有很多這樣的調用和鎖定每個都會使代碼非常慢,效率低下,而且大多數 - 非常醜陋! 2.每個互斥鎖都需要自己的返回值檢查!所以這顯然不能解決最初的問題。
任何幫助的想法?
爲您設置了格式化代碼。將來,請花時間自己做。它只花了我約3秒鐘。 – 2011-04-07 15:37:05
你能解釋比賽條件嗎?我沒有看到這裏顯示的任何問題。即使內核切換,它會回來,程序將(最終)退出。這是一些可怕的波動或時間敏感的東西? – 2011-04-07 15:37:44
@Jenna請解釋爲什麼你需要防止潛在的上下文切換。 – NPE 2011-04-07 15:38:07