在我的应用程序中,我有两个线程
但是,HTTP响应只能由主线程处理,因为它依赖于它的线程本地存储和非线程安全功能.
我正在寻找一种方法来告诉主线程何时收到HTTP响应和相应的数据.主线程应该被附加线程中断并尽快处理HTTP响应,然后继续从之前中断的点开始工作.
我可以考虑的另一种方法是使用附加线程挂起主线程SuspendThread
,使用内联汇编器从主线程复制TLS,然后执行响应处理函数并在之后恢复主线程.
我想到的另一种方法是,在第二个线程回调例程中的某个特定地址上设置一个断点,这样当第二个线程指令指针在该断点上步进时,主线程就会收到通知 - 因此 - 已收到HTTP响应.
然而,这两种方法看起来都不是很好,即使只考虑它们也会受到伤害,而且它们看起来并不可靠.
我可以用什么来打断我的主线程,说它应该礼貌并在做其他事情之前处理HTTP响应?我们赞赏没有依赖库的答案,但如果它提供了一些很好的解决方案,我也会采取一些依赖.
以下问题(关于QueueUserAPC解决方案)得到了解答,并解释说在我的案例中没有安全的方法来推动行为.