Переведите

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
Изображение развития стерженя Линукс (3-ий вариант)
Изображение самомоднейших операционных систем (3-ий вариант)
Изображение начинать Google составляет карту API 3
Изображение разработки приложений радиотелеграфа Android

Перенося WaitForSingleObject к Линукс - часть 2

В моем последнем столбе я обсудил пользу WaitForSingleObject по отношению к mutexes и возможным путям снабдить соответствующую функциональность перенося такой Код к GNU/Linux.  В этом столбе я опишу пользу этого API с предметами случая в Microsoft Windows и предложу возможные пути вывешивать такой Код к GNU/Linux или Unix.

Во-первых, некоторая предпосылка на предметах случая.  Предмет случая как раз другой тип предмета диспетчера стерженя Windows.  От кодирвоания prespective, предмет случая предмет синхронизации который помещают одни или больше предметы диспетчера стерженя и которого семантика синхронизации доступна через WaitForSingleObject и свои кузенов.  На любом, котор дали времени nonsignaled или просигнализирован предмет синхронизации или, т.е. предмет может только находиться в одном из 2 возможных положений.

Не встрещена вся семья WaitFor APIs включая ожидание WaitForSingleobject на ручке предмета или ручки до некоторых определенных критериев.  2 основных критерия для всех этих APIs просигнализированное положение предмета на ручке которого она ждет и значение перерыва.  Таким образом резьба которая вызывает ожидания этого API до определенный предмет входит в просигнализированное положение или определенный перерыв теряла силу.  Небольшое или никакое C.P.U. - время использовано когда такая резьба в статусе ожидания.

В случае случаев, CreateEvent или OpenEvent возвращают ручку к предмету случая.  Когда случай в просигнализированном положении он значит что то случай имеет емкость выпустить одни или больше резьбы этот определенный случай, котор нужно просигнализировать.  Когда случай в nonsignaled положении он не выпустит никакую резьбу.  Первоначально положение случая nonsignaled.  Положение предмета случая установлено недвусмысленно к просигнализировано SetEvent или PulseEvent.  Предметы случая также использованы в, котор перекрыли деятельностях как читать от гнезда, в случай которого положение предмета случая установлено к просигнализировано стерженем довольно чем применением.

Случаи также приходят в 2 переустановленные типы.  Если случай случай ручн-возврата, то все возвращение WaitForSingleObjects который ждет тот случай если так установлено.  Иначе говоря случай ручн-возврата может переход порога генерации одними или больше WaitForSingleObject или свои кузены.  Положение предмета случая ручн-возврата необходимо переустановить недвусмысленно к nonsignaled ResetEvent.

Для предмета случая auto-reset, WaitForSingleObject и отношения переустановленное

Перенося WaitForSingleObject к Линукс - часть 1

Недавно я включился в переносить трицатидвухразрядное применение которое первоначально было написано для NT Microsoft Windows к GNU/Linux.  Это применение содержало большое количество звоноков к NtWaitForSingleObject и более малого количество звоноков к NtWaitForMultipleObject. 

Теперь кто-нибудь которое перенести Код содержа больше чем немного примеров этих определенных APIs Win32, или их близкие кузены WaitForSingleObjectEx, MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx, etc. к Unix или GNU/Linux вероятно уже вздрагивают с вспоминанием длинних трудных дней и ночей кодирвоания пробных и ошибки для того чтобы попробовать и правильно передразнить семантику и функциональность этих определенных APIs Microsoft Windows специфических, но для читателя который пока попытать перенести такое применение, этот столб и мой следующий столб смогите помочь вам за исключением вашего психического здоровья (и по возможности ваших волос!) когда-то в будущем.

Кстати, оба из этих APIs маркированы deprecated в MSDN Майкрософт но все еще работает как предположено в Шиндошсе НТ и Windows XP.  Я не уверен о Шиндошс Виста или Windows 7 по мере того как бедный человек I испытал их на этих операционных системах.  2 deprecated APIs были заменены соответствующими APIs WaitForSingleObject и WaitForMultipleObject соответственно.  Для остатка этого столба я как раз обсужу APIs замены но больше всего чего я говорю будет действитен для или deprecated или замены API.

На первом рассмотрении WaitForSingleObject кажется справедливо доброкачественный.  Описание в MSDN заявляет что «эта функция возвращает когда определенный предмет в просигнализированном положении или когда интервал перерыва истекает».  Звучает как справедливо просто и безобидный API, право?  Возможно что-то подобное к pthread_cond_timedwait POSIX.1 API.  Наилучшим образом, вы смертельно неправильны и этот столб и следующее объяснят почему.

WaitForSingleObject и свои кузены могут ждать сигнал от любого следующих «предметов»: измените извещение, входной сигнал пульта, случай, работу, извещение ресурса памяти, mutex, процесс, семафор, резьбу и waitable отметчик времени и в лимитированных обстоятельствах на архивах и i/o. архива.  Когда соотвественно просигнализировано, разблокирована и продолжается резьба.  Никакой опубликованный унифицированный API в мире GNU/Linux или Unix не приходит придено к регулировать этот ряд предметов в одиночном API.

Это вероятно одна одиночная зона где Win32 API более лучше конструировано чем комплект GNU/Linux или Unix API.  В GNU/Linux и Unix специфические APIs для того чтобы ждать различные виды