gpt4 book ai didi

c++ - 什么是 'thunk' ?

转载 作者:IT老高 更新时间:2023-10-28 11:34:43 27 4
gpt4 key购买 nike

我已经看到它用于编程(特别是在 C++ 领域),但不知道它是什么。大概这是一种设计模式,但我可能是错的。谁能举一个thunk的好例子吗?

最佳答案

thunk通常指一小段代码,作为函数调用,做一些小事,然后JUMPs到另一个位置(通常是函数) 而不是返回给它的调用者。假设 JUMP 目标是一个普通函数,当它返回时,它会返回给 thunk 的调用者。

Thunk 可以用来高效地实现很多有用的东西

  • 协议(protocol)转换——当从使用一种调用约定的代码调用到使用不同调用约定的代码时,可以使用 thunk 来适本地转换参数。这仅在返回约定兼容时才有效,但通常是这种情况

  • 虚函数处理——在 C++ 中调用多重继承基类的虚函数时,需要修复 this 指针以使其指向到正确的地方。 thunk 可以做到这一点。

  • 动态闭包——当你构建一个动态闭包时,闭包函数需要能够获得它被创建的上下文。可以构建一个小的 thunk(通常在堆栈上),它在一些寄存器中设置上下文信息,然后跳转到实现闭包功能的静态代码。这里的 thunk 有效地为函数提供了一个或多个隐藏的额外参数,这些参数不是由调用站点提供的。

关于c++ - 什么是 'thunk' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2641489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com