翻译

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
Linux仁发展(第3编辑)的图象
现代操作系统(第3编辑)的图象
RHCE红色帽子的图象证明了工程师Linux研究指南(检查RH302) (证明新闻)
XSLT 2.0和XPath 2.0程序参考(对程序员的程序员的)图象

对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