Asynchronní volání procedury - Asynchronous procedure call

Asynchronní volání procedury je jednotka práce v počítači. Obvykle program pracuje s prováděním řady volání synchronních procedur na nějakém vlákně. Pokud ale některá data nejsou připravena (například program čeká na odpověď uživatele), pak je udržování podprocesu ve stavu čekání nepraktické, protože podproces přiděluje značné množství paměti pro zásobník procedur a tato paměť se nepoužívá. Takové volání procedury je tedy vytvořeno jako objekt s malým množstvím paměti pro vstupní data a tento objekt je předán službě, která přijímá uživatelské vstupy. Když je přijata odpověď uživatele, služba ji vloží do objektu a předá tento objekt exekuční službě . Spouštěcí služba se skládá z jednoho nebo více vyhrazených pracovních vláken a fronty na úkoly. Každé pracovní vlákno čte ve frontě úloh smyčky a po načtení úlohy jej provede. Pokud neexistují žádné úkoly, pracovní vlákna čekají, a tak se jejich paměť nepoužívá, ale počet pracovních vláken je dostatečně malý (nemá smysl mít více vláken, než je v počítači procesorů).

Životní cyklus volání asynchronního postupu se tedy skládá ze 2 fází: pasivní fáze, kdy pasivně čeká nebo zadává data, a aktivní stav, kdy jsou tato data počítána stejným způsobem jako při obvyklém volání procedury.

Objekt volání asynchronní procedury lze znovu použít pro následná volání procedur s novými daty, která byla přijata později. To umožňuje akumulovat vypočítaná výstupní data v tomto objektu, jak se to obvykle provádí v objektech naprogramovaných pomocí paradigmatu objektově orientovaného programování . Zvláštní pozornost by měla být věnována tomu, aby se zabránilo současnému provedení stejného volání procedury, aby se vypočítaná data udržovala v konzistentním stavu. Takové opakovaně použitelné asynchronní volání procedur se jmenuje herec . Programování pomocí herců je popsáno v programech Actor model a Dataflow . Rozdíl je v tom, že Actor v modelu Actor má přesně dva porty: jeden port pro příjem vstupních dat a druhý (skrytý) port pro poskytování sériového zpracování vstupních zpráv, zatímco Actor v programování Dataflow může mít mnoho a jde do exekuční služby, když všechny vstupy obsahují data nebo oprávnění.

Některé konkrétní implementace

Ve Windows je volání asynchronní procedury (zkráceně APC ) funkce, která se asynchronně provádí v kontextu konkrétního vlákna. APC mohou být generovány systémem (APC v režimu jádra) nebo aplikací (APC v uživatelském režimu).

Reference