3

I remember there was a way to do this, something similar to unix signals, but not so widely used. But can't remember the term. No events/mutexes are used: the thread is just interrupted at random place, the function is called and when it returns, the thread continues.

4

2 回答 2

3

Windows 具有异步过程调用,可以在特定线程的上下文中调用函数。APC 不只是在随机位置中断线程(这很危险——线程可能正在写入文件或获取锁或处于内核模式)。相反,当调用线程通过调用特定函数进入可变等待时,将调度 APC(请参阅 APC 文档)。

如果您需要在特定线程中调用代码的原因是因为您正在与用户界面交互,那么将窗口消息发送发布到您要更新的窗口句柄会更直接。窗口消息总是在创建窗口的线程中处理。

于 2013-05-25T15:37:02.607 回答
1

你可以搜索RtlRemoteCall,但这是一个无证的例程。Windows 中的 APC 在语义上类似于 Unix 信号,但是 APC 要求目标线程处于警报状态才能被传递,不能保证始终满足此条件

于 2013-05-25T15:27:29.630 回答