Nakładające się wejścia/wyjścia
Nakładające się operacje we/wy to nazwa używana dla asynchronicznych operacji we/wy w interfejsie API systemu Windows . Został wprowadzony jako rozszerzenie API w systemie Windows NT .
Wykorzystanie nakładających się operacji we/wy wymaga przekazania struktury OVERLAPPED
do funkcji API, które normalnie blokują, w tym ReadFile()
, WriteFile()
oraz Winsock WSASend ()
i WSARecv()
. Żądana operacja jest inicjowana przez wywołanie funkcji, które zwraca się natychmiast i jest zakończona przez system operacyjny w tle. Obiekt wywołujący może opcjonalnie określić uchwyt zdarzenia Win32 , który ma zostać zgłoszony po zakończeniu operacji. Alternatywnie, program może otrzymać powiadomienie o zdarzeniu za pośrednictwem adresu Port zakończenia we/wy , który jest preferowaną metodą otrzymywania powiadomień, gdy jest używany w symetrycznych środowiskach wieloprocesorowych lub podczas obsługi operacji we/wy na dużej liczbie plików lub gniazd . Trzecią i ostatnią metodą uzyskania powiadomienia o zakończeniu I/O z nakładającymi się IO jest użycie ReadFileEx()
i WriteFileEx()
, które pozwalają na zapewnienie procedury User APC, która zostanie uruchomiona w tym samym wątku po zakończeniu (User APC jest rzeczą bardzo podobną do sygnału UNIX, z tą główną różnicą, że sygnały używają numerów sygnałów z historycznie predefiniowanego wyliczenia , podczas gdy User APC może być dowolną funkcją zadeklarowaną jako " void f(void* context)
"). Tak zwany nakładający się interfejs API przedstawia pewne różnice w zależności od używanej wersji systemu Windows.
Asynchroniczne operacje we/wy są szczególnie przydatne w przypadku gniazd i potoków .
Unix i Linux implementują asynchroniczny interfejs API we/wy POSIX (AIO).
Linki zewnętrzne
- Odniesienie do MSDN: Odczyt pliku()
- Odniesienie do MSDN: WriteFile()
- Odniesienie MSDN: NAKŁADAJĄCE się Struktura danych
- Port zakończenia we/wy