【发布时间】:2010-02-25 17:45:18
【问题描述】:
我有一个被多个线程调用的 threadSafe 方法。有没有办法知道哪个线程调用了它?
【问题讨论】:
-
大多数时候,根据调用者的身份改变方法的行为是个坏主意。您要做什么,这应该根据调用者在哪个线程中运行而改变?如果需要知道这一点是合理的,那么通常有一些与要传递的问题明显相关的内容。
-
基本上,我有函数A,它使用QUDPSocket 来写入数据报,并且readyRead 信号连接到读取数据报的插槽。当从主线程调用 functionA 时,我不希望发出信号或调用方法(我直接使用 readyread),但是当从 qthread 调用它时我会这样做。 udp 套接字在主线程中。
-
你不能在 2 个或更多函数中破坏 functionA 吗?那么主线程只调用“必要的部分”,其他的调用完整的函数?
-
我不发出 readyRead 信号我只调用 writeDatagram 函数,该函数最终获得从回复数据包到达所产生的事件发出的信号。因此,从 qthread 插槽将在 functionA 运行时执行,但从主线程不会执行,因为在函数返回之前不会调用插槽。这与事件循环有关
标签: c++ multithreading qt boost-thread