相关疑难解决方法(0)

线程间通信.如何将信号发送到另一个线程

在我的应用程序中,我有两个线程

  1. 大多数时候都很忙的"主线"
  2. 一个"附加线程",它发出一些HTTP请求,并阻塞直到它得到响应.

但是,HTTP响应只能由主线程处理,因为它依赖于它的线程本地存储和非线程安全功能.

我正在寻找一种方法来告诉主线程何时收到HTTP响应和相应的数据.主线程应该被附加线程中断并尽快处理HTTP响应,然后继续从之前中断的点开始工作.

  • 我可以考虑的另一种方法是使用附加线程挂起主线程SuspendThread,使用内联汇编器从主线程复制TLS,然后执行响应处理函数并在之后恢复主线程.

  • 我想到的另一种方法是,在第二个线程回调例程中的某个特定地址上设置一个断点,这样当第二个线程指令指针在该断点上步进时,主线程就会收到通知 - 因此 - 已收到HTTP响应.

然而,这两种方法看起来都不是很好,即使只考虑它们也会受到伤害,而且它们看起来并不可靠.

我可以用什么来打断我的主线程,说它应该礼貌并在做其他事情之前处理HTTP响应?我们赞赏没有依赖库的答案,但如果它提供了一些很好的解决方案,我也会采取一些依赖.

以下问题(关于QueueUserAPC解决方案)得到了解答,并解释说在我的案例中没有安全的方法来推动行为.

c++ windows multithreading signals

6
推荐指数
1
解决办法
8147
查看次数

标签 统计

c++ ×1

multithreading ×1

signals ×1

windows ×1