我有两个不同的主题。第一个是必须处理gui操作的主线程。第二个是侦听相关tcp端口的网络线程。我需要网络线程以他们将在主线程中运行的方式调用方法。如何在不使用消息队列机制的情况下实现此目的?
答案 0 :(得分:3)
我在你的情况下如何做是告诉另一个线程在其事件队列上安排一个函数。该函数的参数与发送的函数绑定。
例如在网络代码中:
int result = doWork();
otherThreadsEventLoop.scheduleFunction(drawResult,result);
所有GUI框架和大多数网络框架都允许您这样做。
一个问题可能是仅为您提供C回调的库的附加参数的绑定。我的建议是编写一个“包装器”函数,它允许你将std ::函数传递给回调函数。
答案 1 :(得分:2)
你必须告诉在主线程上运行的代码,它需要调用你的方法。无论你如何实现它,你基本上都会有某种消息队列。您必须更具体地了解您的实际要求,以便我们建议适合您案例的消息队列机制。