2011-06-09 59 views

回答

3

基本上,只有「有趣」的錯誤是EINVAL,這在大多數程序後析構函數已經摧毀了一些互斥纔會發生,因爲的內存損壞,或者像我從我自己的痛苦經驗知道,程序關閉期間。我看到它的方式,對這種錯誤的唯一合理的反應是放棄程序,另一方面,如果錯誤發生的確是因爲程序已經關閉而非常不方便。當然,這是可以解決的,但這並不是那麼簡單,對於大多數程序來說沒有太多的收穫。

+0

然後你不處理內存損壞? – dlewin 2011-06-09 14:24:48

+5

不,你不會「處理」內存損壞,你只是不會首先損壞內存。 – Ringding 2011-06-09 16:13:45

+1

實際上,我的問題更多地是關於EBUSY或EDEADLK,分別是: 「互斥鎖無法獲取,因爲它已被鎖定」和「檢測到死鎖條件或當前線程已擁有該互斥鎖」:是什麼讓你覺得這個不能發生? – dlewin 2011-06-14 11:10:03

1

首先,我認爲「所有源代碼」和「從不測試」太強大了。我認爲「一些」和「經常」會更準確。

在書中,錯誤檢查代碼通常被省略以便於說明的清楚。

至於現實世界的代碼,我想答案必須是它被認爲失敗的可能性非常低。這是否是一個好的假設值得商榷。

+0

我同意這種形式,我不認爲物質是「一些」和「經常」是主觀想法。我的意思是,代碼和提供的示例中的「大部分」時間不包括返回這種功能 – dlewin 2011-06-09 14:28:08