翻譯

Translate to EnglishÜbersetzen Sie zum Deutsch/GermanΜεταφράστε στα ελληνικά/GreekПереведите к русскому/RussianOversetter til Norsk/NorwegianÖversätta till Svensk/Swedishहिन्दी अनुवाद करने के लिए/Hindi
Tradueix al català/CatalanTulkot uz latviešu/LatvianPreložiť do slovenčiny/SlovakVertaal aan het Nederlands/Dutchترجمة الى العربية/ArabicTraduzca al Español/SpanishTraduisez au Français/French
Traduca ad Italiano/ItalianTraduza ao Português/Portuguese日本語に翻訳しなさい /Japanese한국어에게 번역하십시오/Korean中文翻译/Chinese Simplified中文翻译/Chinese TraditionalПереклад на українську/Ukrainian
XSLT 2.0和XPath 2.0程序参考(對程序員的程序員的)圖像
先進編程在UNIX環境,再版(阿狄森-維斯利專家計算的系列)的圖像
現代操作系统(第3編輯)的圖像
操作系統的概念的圖像

對Linux -第2部分的端起的WaitForSingleObject

在我的前個崗位,當端起這樣代碼對GNU/Linux时,我關於mutexes和可能的方式實施等效功能談論了使用WaitForSingleObject。  在這個崗位我在微軟視窗中將描述使用與事件對象的這API並且建議張貼這樣代碼可能的方式對GNU/Linux或Unix。

首先,在事件對象的一些背景。  事件對象是另外一種Windows仁調度員對象。  從prespective的編制程序,事件對象是濃縮一個或更多仁調度員對象,並且同步語義學通过WaitForSingleObject和它的表兄弟是容易接近的同步對象。  在指定时间同步對象nonsignaled或發信號,即對象可能只在二個可能的狀態之一中。

所有APIs WaitFor家庭包括在對象把柄的WaitForSingleobject直到一些指定的標準的等待或把柄遇見。  所有這些APIs的二個基本的標準是把柄它等待和一種超时价值對象的發信號的狀態在。  因而叫這API等待的螺紋,指定的對象进入發信號的狀態或指定的暫停到期了。  很少或沒有CPU時間,當這樣螺紋在等候状态时,使用。

在事件情況下, CreateEvent或OpenEvent退回把柄到事件對象。  當事件在發信號的狀態时意味着那事件有能力發布等待這個特殊事件的一個或更多螺紋發信號。  當事件在nonsignaled狀態它不會發布任何等待的螺紋。  最初事件的狀態nonsignaled。  事件對象的狀態明白地被設置對發信號由SetEvent或PulseEvent。  在事件對象狀態被設置對發信號由仁而不是由應用情況下,事件對象也用于被重疊的操作例如讀從插口。

事件也进來二個被重新設置的類型。  如果事件是手工重新設置事件,則等待那個事件,如果如此配置的所有WaitForSingleObjects回歸。  换句话说手工重新設置事件可能由一個或更多觸發行動WaitForSingleObject或它的表兄弟。  必须明白地重新設置手工重新設置事件對象的狀態到nonsignaled由ResetEvent。

對于自動復位事件對象, WaitForSingleObject和它是聯繫被重新設置的

對Linux -第1部分的端起的WaitForSingleObject

最近我在端起介入了為Microsoft Windows NT最初被寫給GNU/Linux的32位應用。  這種應用包含了很大數量的電話對NtWaitForSingleObject和電話的一個更小的數字對NtWaitForMultipleObject。 

现在比這些特殊Win32 APIs一些個事例的必須端起包含更多代碼的任何人,或者他們Unix的接近的表兄弟WaitForSingleObjectEx、MsgWaitForMultipleObjects、MsgWaitForMultipleObjectsEx、等等或GNU/Linux大概是已經震動的與累試法編制程序長的艱鉅天和夜的往事嘗試和恰當地仿造這些特殊微軟視窗具體APIs的語義學和功能,但是為未必須試圖端起這樣應用、這個崗位和我的下個崗位的讀者可以幫助您除您的頭腦清楚(和可能您的頭髮之外!) 在將來。

順便說一句,這兩APIs在MSDN在視窗NT和Windows XP被標記貶抑了由微軟,但是仍然工作正如所料。  因為我未測試他們在這些操作系统,我對Windows Vista或Windows 7不是肯定的。  二被貶抑的APIs被等效APIs各自WaitForSingleObject和WaitForMultipleObject替换了。  為這個崗位剩下的人我將談論替換APIs,但是最什麼我說為貶抑或替換API將是合法的。

在第一次考試中WaitForSingleObject似乎相當良性。  在MSDN的描述阐明, 「這個作用返回,當指定的對象在發信號的狀態或,當暫停間隔時間流逝」时。  听起來十分簡單和無害API,权利?  可能事相似与POSIX.1 API pthread_cond_timedwait。  那么,您死错误,並且這個崗位和下列為什麼將解釋。

WaitForSingleObject和它的表兄弟可能等待從任一或所有的一個信號以下「對象」: 改變通知、控制臺輸入、事件、工作、存储器资源通知、mutex、過程、動臂信號機、螺紋和waitable定時器和在文件和文件輸入/輸出的有限的情況。  當適當地發信號,螺紋被疏導並且繼續。  在GNU/Linux或Unix世界的出版規範化的API不來來到處理對象的這個範圍在唯一API的。

這大概是Win32 API比GNU/Linux或Unix API集合更好被設計的一個區域。  在GNU/Linux和Unix有等待不同的種類的具體APIs