我记得有一种方法可以做到这一点,类似于unix信号,但没有广泛使用。但不记得这个词了。没有使用事件/互斥体:线程只是在随机位置中断,函数被调用,当它返回时,线程继续。
答案 0 :(得分:3)
Windows有Asynchronous Procedure Calls,它可以在特定线程的上下文中调用函数。 APC不只是在随机位置中断线程(这将是危险的 - 线程可能正在写入文件或获取锁定或处于内核模式)。而是在调用线程通过调用特定函数进入可变等待时调度APC(参见APC文档)。
如果您需要在特定线程中调用代码的原因是因为您正在与用户界面进行交互,那么它会更直接地向send或post窗口消息发送窗口句柄你想要更新。窗口消息总是在创建窗口的线程中处理。
答案 1 :(得分:1)
你可以搜索RtlRemoteCall
,但这是一个无证的例程。 Windows中的APC在语义上类似于Unix信号,但APC要求目标线程处于可警告状态才能交付,但不保证始终满足此条件