Traduca

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
Immagine di sviluppo di applicazioni della radio del Android
Immagine dei concetti del sistema operativo
Immagine di cominciare Google Maps api 3
Immagine dei sistemi operativi moderni (terza edizione)

WaitForSingleObject Porting a Linux - parte 2

In mio ultimo alberino ho discusso l'uso di WaitForSingleObject rispetto ai mutexes ed ai sensi possibili realizzare la funzionalit equivalente quando porting tale codice a GNU/Linux. In questo alberino descriver l'uso di questo api con gli oggetti di evento in Microsoft Windows e suggerir i sensi possibili di invio del tale codice a GNU/Linux o ad Unix.

In primo luogo, una certa priorit bassa sugli oggetti di evento. Un oggetto di evento appena un altro tipo di oggetto dello spedizioniere del nocciolo di Windows. Da una codificazione prespective, un oggetto di evento un oggetto di sincronizzazione che incapsula uno o più oggetti dello spedizioniere del nocciolo e di cui la semantica di sincronizzazione accessibile via WaitForSingleObject ed i relativi cugini. In qualunque momento un oggetto di sincronizzazione nonsignaled o segnalato, cio l'oggetto pu soltanto essere in una di due condizioni possibili.

Tutta famiglia di WaitFor degli api compreso l'attesa di WaitForSingleobject su una maniglia dell'oggetto o le maniglie fino ad alcuni test di verifica specificati incontrata. I due test di verifica di base per tutti questi api sono la condizione segnalata dell'oggetto di cui sulla maniglia sta attendendo e un valore di prespegnimento. Cos un filetto che denomina le attese di questo api finch l'oggetto specificato entra nella condizione segnalata o nel prespegnimento specificato ha espirato. Poco o nessun tempo CPU usato quando un tal filetto nella condizione di attesa.

Nel caso degli eventi, un CreateEvent o un OpenEvent restituisce una maniglia ad un oggetto di evento. Quando un evento nella condizione segnalata significa che quello l'evento ha la capacit di liberare uno o più filetti che aspettano questo evento particolare da segnalare. Quando un evento nella condizione nonsignaled non liberer alcun filetto attendente. Inizialmente la condizione di un evento nonsignaled. Una condizione dell'oggetto di evento regolata esplicitamente al segnalato a da SetEvent o da PulseEvent. Gli oggetti di evento inoltre sono utilizzati nei funzionamenti coincisi come lettura da uno zoccolo, nel qual caso la condizione di oggetto di evento regolata al segnalato a dal nocciolo piuttosto che da un'applicazione.

Gli eventi inoltre vengono in due tipi ripristinati. Se un evento un evento di manuale-risistemazione, quindi tutto il ritorno di WaitForSingleObjects che aspetta quell'evento in caso affermativo configurato. In altre parole un evento di manuale-risistemazione pu innescare l'azione dagli uno o più WaitForSingleObject o i relativi cugini. Una condizione dell'oggetto di evento di manuale-risistemazione deve essere ripristinata esplicitamente al nonsignaled a da ResetEvent.

Per un oggetto di evento del ripristino automatico, WaitForSingleObject ed esso rapporti ripristinato

WaitForSingleObject Porting a Linux - parte 1

Recentemente sono stato coinvolgere nel porting un'applicazione a 32 bits che inizialmente scritto stata per il NT di Microsoft Windows a GNU/Linux. Questa applicazione ha contenuto tantissime chiamate a NtWaitForSingleObject e un pi piccolo numero delle chiamate a NtWaitForMultipleObject.

Ora qualcuno che abbia dovuto port il codice che contiene pi di alcuni casi di questi api particolari Win32, o i loro cugini vicini WaitForSingleObjectEx, MsgWaitForMultipleObjects, MsgWaitForMultipleObjectsEx, ecc. ad Unix o GNU/Linux probabilmente gi sta rabbrividicendo con il ricordo dei giorni e delle notti ardui lunghi di codificazione di approssimazioni successive per provare ed imitare correttamente la semantica e la funzionalit di questi api specifici particolari di Microsoft Windows, ma per il lettore che ancora non ha dovuto tentare di port una tal applicazione, questo alberino ed il mio alberino seguente pu aiutarlo salvo la vostra sanit di mente (e possibilmente i vostri capelli!) un momento in avvenire.

A proposito, entrambi api sono contrassegnati hanno disapprovato in MSDN da Microsoft ma ancora funzionano come preveduti in Windows NT ed in Windows Xp. Non sono sicuro circa Windows Vista o Windows 7 poich non li ho verificati su questi sistemi operativi. I due api disapprovati sono stati sostituiti dagli api equivalenti WaitForSingleObject e WaitForMultipleObject rispettivamente. Per il resto di questo alberino discuter appena gli api del rimontaggio ma pi di che cosa dico sia valido per disapprovata o il rimontaggio api.

Su primo esame WaitForSingleObject sembra ragionevolmente benigno. La descrizione nelle condizioni di MSDN che questa funzione restituisce quando l'oggetto specificato nella condizione segnalata o quando l'intervallo di prespegnimento trascorre. Suona come un api ragionevolmente semplice ed innocuo, destra? Forse qualche cosa di simile al pthread_cond_timedwait di POSIX.1 api. Bene, siete completamente errato e questo alberino e ci che segue spiegheranno perch.

WaitForSingleObject ed i relativi cugini possono aspettare un segnale da c' ne o tutto seguire obietta: cambi la notifica, l'input della sezione comandi, l'evento, il lavoro, la notifica delle risorse di memoria, il mutex, il processo, il semaforo, il filetto ed il temporizzatore waitable ed in circostanze limitate sulle lime e sull'ingresso/uscita della lima. Una volta segnalato giustamente, un filetto sbloccato e continua. Nessun api standardizzato pubblicato nel mondo di Unix o di GNU/Linux viene prossimo a trattare questa gamma degli oggetti in un singolo api.

Ci probabilmente l'una singola zona dove un Win32 api progettato pi meglio che l'insieme di Unix o di GNU/Linux api. In GNU/Linux ed in Unix ci sono api specifici per aspettare i generi differenti di