在pthread C ++中使用Obj-C performSelector OnThread

时间:2013-06-11 18:03:51

标签: c++ objective-c multithreading pthreads

我有一个关于c ++ pthread的问题。

如果我有Thread1和Thread2。

有没有办法在Thread1上执行Thread2方法?从Thread1调用?

//code example

//we can suppose that Thread2 call has a method 

void myThread2Method();

//I would to call this method from Thread1 but your execution  must to run on Thread2..

thread1.myThread2Method()

我想知道是否存在类似于Obj-c中出现的performSelector OnThread的方式。

1 个答案:

答案 0 :(得分:1)

使用纯pthreads没有类似的方法。这(您所指的Objective-C函数)仅适用于具有运行循环的线程,因此它仅限于objective-C。

pure-c中没有等效的运行循环/消息泵,这些依赖于guis(例如iOS等)。

唯一的选择是让你的线程2检查某种条件,如果已设置,则执行预定义的任务。 (这可能是一个全局函数指针,如果指针不为null,则thread-2定期检查并执行该函数。)

这是一个粗略的例子,展示了它如何运作的基础

void (*theTaskFunc)(void);  // global pointer to a function 

void pthread2()
{
    while (some condition) {
       // performs some work 

       // periodically checks if there is something to do
       if (theTaskFunc!=NULL) {
           theTaskFunc();      // call the function in the pointer
           theTaskFunc= NULL;  // reset the pointer until thread 1 sets it again 
       }
    }
    ...
}

void pthread1() 
{

      // at some point tell thread2 to exec the task.
      theTaskFunc= myThread2Method;  // assign function pointer
}