我使用辅助线程调用了一个方法。 从方法内部我需要从主线程调用一个方法。
这是结构
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);
答案 0 :(得分:4)
如果主线程正在运行消息泵,则可以在收到消息时以某种方式发布消息以执行函数。
否则有一个简单的队列(当然是适当的锁定)。将足够的数据添加到队列中,以便可以调用main_thread_method。 (args等)。定期轮询简单队列以查找主线程中的新消息并处理它们。
答案 1 :(得分:1)
我知道你想从辅助线程调用一个必须在主线程中运行的方法。这是不可能的。调用的函数在同一个线程中运行。您可以使用任何类型的多线程通信方法,如信号量,消息池,条件等。