Obsah:
Definícia - Čo znamená Thunk?
Thunk, vo všeobecnom výpočtovom kontexte, je kus kódu vygenerovaného strojom na nízkej úrovni, ktorý implementuje podrobnosti softvérového systému. Je to jedna z nasledujúcich možností:
- Časť kódu, ktorá vykonáva oneskorené výpočty
- Funkcia implementácie virtuálnej tabuľky funkcií
- Mapovanie strojových dát z jedného formulára špecifického pre systém do druhého kvôli problémom s kompatibilitou
Techopedia vysvetľuje Thunk
Koncepty thunku sa objavili začiatkom roku 1961. Je to výpočet, ktorý po vykonaní vracia hodnotu argumentu. Hovor podľa potreby nahradí thunk jeho spätnou hodnotou po prvom vykonaní. Jazyky s oneskorenou väzbou sa vyhľadávajú v runtime čase na základe výpočtov vykonaných Thunk.
Nullary funkcie (funkcie, ktoré neberú argumenty) vo funkcionálnom programovaní sa označujú ako thunk. Thunks simuluje lenivé vyhodnotenie a oneskoruje výpočet argumentov funkcie. Tieto funkcie ďalej nútia thunks získať skutočné hodnoty. Thunk sa môže objaviť prirodzene aj pri implementácii konštantných funkcií vo vysokom poriadku programovania.
Kompilátory objektovo orientovaných jazykov, ako napríklad C ++, generujú funkcie nazývané thunks. Optimalizujú volania virtuálnych funkcií v prítomnosti virtuálnych alebo viacerých dedičstiev.
Niektoré prípady premiestniteľného kódu používajú miestne thunky na volanie funkcií knižnice. Volanie dynamickej knižnice v kóde preskočí na Thunks v tabuľke skokov, ktorá je ďalej nahradená funkciami načítania príslušnej knižnice alebo presunutím na vhodný bod v už načítanej knižnici. Thunk v tejto oblasti vypočítava alebo vracia predtým vypočítané a uložené hodnoty v pamäti. Thunky sa používajú v softvérových virtuálnych pamäťových systémoch na vykonávanie mapovania z virtuálnej na fyzickú adresu. Vytvorenie 16-bitového virtuálneho stroja DOS v 32-bitovom OS sa nazýva thunking a zaisťuje spätnú kompatibilitu s aplikáciami využívajúcimi staré systémové volania.
Ploché Thunks používajú Thunks prekladajúce hovory z 32-bitového kódu na 16-bitový kód. Prostredný kód prekladá pamäťovú adresu medzi platformami. Spoločnosť Microsoft má samotnú vrstvu Thunking nazvanú Win32s, ktorá umožňuje spustenie 32-bitovej aplikácie Windows na 16-bitovom systéme Windows. 64-bitová verzia systému Windows poskytuje aj vrstvu Thunking, WoW64, ktorá umožňuje používanie 32-bitových aplikácií Windows.