使用辅助线程中的主线程调用方法

时间:2011-11-07 10:11:03

标签: c++ c linux gtk

我使用辅助线程调用了一个方法。 从方法内部我需要从主线程调用一个方法。

这是结构

void main_thread_method()
{

} 

void secondary_thread_method()
{

//do something here

  call main_thread_method() here using main thread

}

pthread thread1;

pthread_create (&thread1, NULL, (void *) &secondary_thread_method, NULL);

pthread_join(thread1);

2 个答案:

答案 0 :(得分:4)

如果主线程正在运行消息泵,则可以在收到消息时以某种方式发布消息以执行函数。

否则有一个简单的队列(当然是适当的锁定)。将足够的数据添加到队列中,以便可以调用main_thread_method。 (args等)。定期轮询简单队列以查找主线程中的新消息并处理它们。

答案 1 :(得分:1)

我知道你想从辅助线程调用一个必须在主线程中运行的方法。这是不可能的。调用的函数在同一个线程中运行。您可以使用任何类型的多线程通信方法,如信号量,消息池,条件等。