问题标签 [thunk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1446 浏览

c++ - 我们可以在 linux 中实现 c++ thunk 吗?

我想使用类成员函数作为回调,我不使用 libsigc,因为它很慢。在 ATL 中,我们可以使用成员函数进行 C 风格的回调(http://www.codeproject.com/KB/cpp/SoloGenericCallBack.aspx),那么我们可以在 linux 中实现 c++ thunk 吗?

下面的代码会崩溃:

编辑:感谢 user786653,我得到了正确的答案:

0 投票
2 回答
837 浏览

visual-c++ - ATL 与 DEP 不兼容是否可以修复?

ATL 使用 thunk 来管理窗口的回调,显然它需要允许数据执行。

微软说

请注意,系统 DEP 策略可以覆盖,并且拥有 DEPAlwaysOn将禁用 ATL thunk 仿真,无论属性如何。

我将这句话翻译成(或多或少)“ATL 应用程序可能因系统策略而崩溃”是否正确?

有没有办法让 ATL-8.0 之前的应用程序在任何系统上正常工作,希望同时仍然为除了 thunk 之外的所有东西打开 DEP?

0 投票
3 回答
483 浏览

python - 标准库中还有其他队列吗?

我要排队

稍后再打电话/等待。然后向队列中添加更多暂停的 Popens,然后再次使用它们,依此类推。

主队列模块非常关心同步,这使得 api 在某些地方感觉有点奇怪。我不关心同步(单线程程序,Popen 只是做他们的工作并在错误时抛出异常,它们不会以任何重要的方式影响环境(它们生成文件)

我是否应该只使用稍后添加的生成器。如果是这样,将项目添加到生成器的好方法是什么,请调用

每次都显得很浪费。

0 投票
5 回答
3893 浏览

haskell - Haskell 中的所有内容是否都存储在 thunk 中,甚至是简单的值?

Haskell 堆中以下值/表达式/函数的 thunk 是什么样的?

考虑到 Haskell 的惰性评估模式,如果能了解这些在 Haskell 中是如何表示的,那就太好了。

0 投票
1 回答
1295 浏览

windows - ESP 的值未正确保存....和 ​​C/C++ 调用约定

我正在使用 OpenCV 库、Boost 库和我从这个LINK下载的一段代码编写一个应用程序。我已经在与 Thunk32 相同的解决方案下创建了一个项目,并且我有以下文件:

主项目.cpp

窗口.h

Window.cpp

现在,当我运行它时,如果我不在窗口内移动鼠标,没关系,回调已成功传递给 cvSetMouseCallback 函数。cvSetMouseCallback 函数有三个参数 1. 窗口名称, 2. CvMouseCallback 和 NULL 字符。CvMouseCallback 定义为

而 CV_CDECL 只是 _cdecl 调用约定的重​​新定义。

现在,我的 mouseHandler 函数是一个类成员函数,我假设它符合 _thiscall 调用约定。

我的问题是,当我将鼠标放在窗口上时,如果它至少成功进入该方法一次,为什么会出现以下错误?我猜我的鼠标在窗口内移动的第二个瞬间就会发生变化。任何人都可以帮助我吗?

这是我正在做的图像:

带有错误和结果的图像

0 投票
1 回答
1104 浏览

delphi - 如何将方法作为回调传递给 Windows API 调用(跟进)?

这篇文章是Ran在此处发布的相关问题的后续。

接受的答案坚持使用通常的普通旧功能。

这段摘录特别引起了我的注意:

一个实例方法有一个额外的、隐含的、包含实例引用的参数,即Self。

坚信应该有一种方法可以使用一种“参数”适配器(改写为摆脱不需要的 Self 隐式引用并提供指向符合要求的回调函数的指针),我最终找到了这篇题为Callback的文章彼得莫里斯一堂课

综上所述,他使用thunking技术作为适应技巧。(免责声明:我从未测试过代码)。

我知道它作为一种解决方案不是很干净,但它允许 OO 设计具有所有假定的好处。

我的问题:

知道TCallbackThunk是基于回调函数签名的,如果像 Peter Morris 那样做是要走的路,上面提到的帖子的答案是什么?

.

0 投票
0 回答
562 浏览

iphone - iOs 中的“非虚拟 thunk to ....”错误

在我的 iPhone 应用程序中,我收到以下错误:

发生错误的地方是:

我用谷歌搜索了这个问题的解决方案,我在这个链接中得到了一些东西。它说这个错误是一个“编译器错误”。我已将调试模式更改为发布并进行了测试,但仍然存在问题。任何想法?我只在 iPhone 4S 上遇到这个问题。在 iPhone 3GS 上它工作正常。

0 投票
1 回答
673 浏览

64-bit - 读取 Explorer.exe 的 Thunk 数据

我正在尝试在 explorer.exe 中进行一些 IAT 挂钩。规格:Windows 7 x64,Visual C++。我已经达到了能够从我选择的任何可执行文件中读取 thunk 数据的程度,除了 C:\Windows\Explorer.exe。当我针对它运行我的程序时,我在从该可执行文件读取内存时收到访问冲突。但是,当我对 C:\Windows\system32\Explorer.exe 和 C:\Windows\sysWOW64\Explorer.exe 运行它时,我没有任何问题。为什么是这样?C:\Windows\Explorer.exe 是指向其他 explorer.exe 的某种符号链接吗?是什么让我无法阅读此文件?

0 投票
1 回答
70 浏览

c - 是否有任何操作系统允许应用程序程序员从 thunk 中创建指针?

许多操作系统允许存储映射文件,并懒惰地读取它们。如果操作系统可以做到这一点,那么它就有能力从 thunk 中创建常规指针。

是否有任何操作系统允许应用程序程序员从他自己的 thunk 中创建指针?

我知道操作系统在一定程度上已经支持此功能,因为可以创建一个管道,将其映射到内存中,并将一个进程连接到管道以完成我正在谈论的一些事情,所以这个功能似乎不太不可能或不合理。

这个特性的一个简单例子是一个指针,它计算它被取消引用的次数。以下程序将输出零,然后输出一。

PS 需要一个 volatile 限定符,因为 x 指向的值会意外更改,对吧?同样,编译器没有理由认为取消引用 x 会改变计数器,所以那里也需要一个 volatile 对吗?

0 投票
2 回答
2390 浏览

c++ - 如何在 x86 和 x64 中对函数进行 thunk?(就像 C++ 中的 std::bind 一样,但是是动态的)

如何在 x86 和 x64 上使用任意(固定)数量的参数对任意函数进行 thunk?

(我不需要浮点数、SSE 等。参数都是整数或指针。)