번역하십시오

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 판)의 심상
인조 인간 무선 애플리케이션 개발의 심상
XSLT 2.0와 XPath 2.0 프로그래머 참조 (프로그래머에 프로그래머)의 심상

리눅스 - 부 2에 향하는 WaitForSingleObject

나의 마지막 포스트에서 나는 동등한 기능을 실행하는 mutexes와 가능한 방법에 관하여 그런 부호를 GNU/Linux에 향할 때 WaitForSingleObject의 사용을 토론했다.  이 포스트에서 나는 Microsoft Windows에 있는 사건 목표를 가진 이 API의 사용을 기술하고 GNU/Linux 또는 유닉스에 그런 부호 배치의 가능한 방법을 건의할 것이다.

첫째로, 사건에 약간 배경은 반대한다.  사건 목표는 Windows 알갱이 배차계 목표의 다만 또 다른 유형이다.  prespective 코딩에서, 사건 목표는 한개 이상 알갱이 배차계 목표를 캡슐에 넣고 그의 동기화 의미론이 WaitForSingleObject와 그것의 사촌을 통해 접근 가능한 동기화 목표이다.  보통때는 동기화 목표는 nonsignaled 신호된다, i.e 목표는 2개의 가능한 국가의 한에서만 있을 수 있다.

목표 손잡이에 WaitForSingleobject 기대 몇몇 지정된 표준까지 손잡이를 포함하여 APIs의 WaitFor 계열 모두는 만나진다.  이 APIs 전부를 위한 2개의 기본적인 표준은 그의 손잡이에 기다리고 그리고 타임아웃 가치 목표의 신호한 국가이다.  따라서 지정되는 목표가 신호하는 국가 또는 지정되는 타임아웃에 들어갈 때까지 이 API 기대를 부르는 실은 만료되었다.  거의 비슷하게 CPU 시간은 그런 실이 대기 상태에 있을 때 사용된다.

사건의 경우에, CreateEvent 또는 OpenEvent는 사건 목표에 손잡이를 돌려보낸다.  사건은 신호하는 국가에 있을 때 그것에는 사건 신호될 이 특정한 사건을 기다리는 한개 이상 실을 풀어 놓는 수용량이 다는 것을 의미한다.  사건은 nonsignaled 국가에 있을 때 어떤 기다리는 실도 풀어 놓지 않을 것이다.  초기에 사건의 국가는 nonsignaled.  사건 목표의 국가는 SetEvent 또는 PulseEvent에 의해 신호하는에 명백하게 놓인다.  사건 목표는 또한 소켓에서 읽기와 같은 부분적으로 덮인 가동에서 사건 목표 국가가 신청에 의해 보다는 오히려 알갱이에 의해 신호하는에 놓이면 어떤 경우에는 이용된다.

사건은 또한 2가지의 다시 놓인 유형 들어온다.  사건이 수동 리셋 사건인 경우에, WaitForSingleObjects 모든 반환 이렇게 형성해 그 사건을 기다리는 경우에.  WaitForSingleObject 또는 그것의 사촌 다시 말하면 수동 리셋 사건은 한개 이상에 의하여 활동을 방아쇠를 당길 수 있다.  수동 리셋 사건 목표의 국가는 ResetEvent에 의해 nonsignaled에 명백하게 다시 놓여야 한다.

자동 재시동 사건 목표를 위해, WaitForSingleObject와 관계 다시 놓인 이다

리눅스 - 부 1에 향하는 WaitForSingleObject

최근에 나는 GNU/Linux에 Microsoft Windows NT를 위해 처음에 쓰여진 32 비트 신청을 향하기에서 포함되었다.  이 신청은 NtWaitForSingleObject에 많은 외침 및 NtWaitForMultipleObject에 외침의 더 작은 수를 포함했다. 

이 특정한 Win32 APIs의 약간 경우 보다는 더 많은 것을 포함하는 부호를 향해야 한 유닉스에 지금 누군가, 또는 그들의 가까운 사촌 WaitForSingleObjectEx, MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx, 등등 또는 GNU/Linux는 아마 시행 착오 코딩의 긴 벅찬 일 그리고 밤의 회상에 이미 Microsoft Windows 이 특정한 특정한 APIs의 의미론 그리고 기능을 시도하고 정확하게 흉내내기 위하여, 그러나 아직 그런 신청, 이 포스트 및 나의 다음 포스트를 향하는 것을 시도할 필요없던 독자를 위해 돕는 당신의 온건함 일지모른다 (및 가능하게 당신의 머리를 제외하고 당신을!) 언젠가 앞으로는.

그런데, 이들 모두 APIs는 마이크로소프트 에의한 MSDN에서 비난하고 그러나 Windows NT와 Windows XP에서 아직도 예상했던대로 일한다 표를 한다.  나는 나가 이 운영 체계에 그(것)들을 시험하지 않기 때문에 Windows Vista 또는 Windows 7에 관하여 확실하지 않다.  2 비난된 APIs는 각각 동등한 APIs WaitForSingleObject와 WaitForMultipleObject 대체되었다.  이 포스트의 나머지를 위해 나는 다만 보충 APIs를 토론할 것이다 그러나 나가 말하는 무슨과의 가장 비난하는 보충 API를 위해 유효하십시오.

첫번째 검사에 WaitForSingleObject는 상당히 자비롭게 보인다.  MSDN에 있는 묘사는 지정되는 목표가 신호하는 국가에 있을 타임아웃 간격이"가 경과할 때 "이 기능 돌려보낸ㄴ다는 것을 주장한다.  아주 간단하고 무해한 API 의 권리 같이 소리가 나는가?  POSIX.1 API pthread_cond_timedwait와 유사한 어쩌면 무언가.  그래서, 당신은 황폐하게 틀리 이 포스트 및 뒤에 올 것이다 것 왜 설명할 것이다.

WaitForSingleObject와 그것의 사촌은 뒤에 오는 "목표"의 하나 또는 전체에서 신호를 기다릴 수 있다: 파일과 파일 입력/출력에 한정된 상황에서 변화 통보, 장치 입력, 사건, 일, 메모리 리소스 통보, mutex, 과정, 시그널, 실 및 waitable 타이머 및.  적합하게 신호될 때, 실은 비블록화되고 계속한다.  GNU/Linux 또는 유닉스 세계에 있는 간행한 표준화한 API는 단 하나 API에 있는 목표의 이 범위 취급에 와 오지 않는다.

이것은 아마 Win32 API가 잘 디자인되는 GNU/Linux 또는 유닉스 API 세트 보다는 1개의 지역이다.  GNU/Linux와 유닉스에서 다른 종류를의 기다리는 특정한 APIs가 있다