c++ - programming - thunk redux




Was ist ein 'Thunk'? (6)

Ich habe es in der Programmierung verwendet (speziell in der C ++ - Domäne) und habe keine Ahnung, was es ist. Vermutlich ist es ein Designmuster, aber ich könnte falsch liegen. Kann jemand ein gutes Beispiel für einen Thunk geben?



Das Wort thunk hat in der Informatik mindestens drei verwandte Bedeutungen. Ein "Thunk" kann sein:

  • ein Stück Code, um eine verzögerte Berechnung durchzuführen (ähnlich einer Schließung)
  • ein Feature einiger virtueller Funktionstabellen-Implementierungen (ähnlich einer Wrapper-Funktion)
  • eine Zuordnung von Maschinendaten von einem systemspezifischen Formular zu einem anderen, normalerweise aus Kompatibilitätsgründen

Ich habe es normalerweise im dritten Kontext gesehen.

http://en.wikipedia.org/wiki/Thunk


Diese Frage wurde bereits zu SO gestellt, siehe:

Was ist ein "Thunk", wie er in Schema oder allgemein verwendet wird?

Soweit ich das beurteilen kann, ähnelt es einer Lambda-Anweisung, bei der Sie den Wert erst dann zurückgeben möchten, wenn Sie ihn bewerten müssen. oder es kann auch mit einem Property-Getter verglichen werden, der im Design Code ausführt, um einen Wert zurückzugeben, während die Schnittstellenform mehr wie eine Variable aussieht, aber auch ein polymorphes Verhalten hat, das durch Vererbung oder ersetzt werden kann durch Auslagern des Funktionszeigers, der basierend auf Kompilierzeit- oder Umgebungseigenschaften einen Wert zur Laufzeit auswerten und zurückgeben würde.


Es gibt erhebliche Unterschiede in der Verwendung. Fast überall ist ein Thunk eine Funktion, die (zumindest konzeptionell) ungewöhnlich klein und einfach ist. Es ist normalerweise eine Art von Adapter, der Ihnen die richtige Schnittstelle zu etwas oder anderem gibt (einige Daten, eine andere Funktion, etc.), aber wird zumindest so gesehen, als ob Sie sonst nichts tun.

Es ist fast wie eine Form von syntaktischem Zucker, außer dass (zumindest wie gewöhnlich) syntaktischer Zucker die Dinge so aussehen lässt, wie der menschliche Leser sie sehen will, und ein Thunk ist, etwas so aussehen zu lassen, wie der Compiler es möchte sieh es dir an.


Ich werde nachsehen, aber ich dachte Thunking war der Prozess, der von einem 32-Bit-Prozessor verwendet wurde, um älteren 16-Bit-Code auszuführen.

Ich benutzte es als eine Analogie dafür, wie man einschränken muss, wie schnell man spricht und welche Wörter man benutzt, wenn man mit dummen Leuten spricht.

Ja, es ist in der Wikipedia-Link (der Teil über 32-Bit, nicht meine Nerdalogie ).

https://en.wikipedia.org/wiki/Thunk

Ein Großteil der Literatur zu Interoperabilitätsthunks bezieht sich auf verschiedene Wintel-Plattformen, einschließlich MS-DOS, OS / 2, Windows [9] [10] und .NET, und auf den Übergang von 16-Bit- zu 32-Bit-Speicheradressierung . Da Kunden von einer Plattform zu einer anderen migriert sind, waren Thunks unerlässlich, um ältere Software zu unterstützen, die für die älteren Plattformen geschrieben wurde.

(Hervorhebung von mir hinzugefügt)


Per Kyle Simpson Definition ist ein Thunk eine Möglichkeit, die Komponente der Zeit aus asynchronem Code zu abstrahieren.





thunk