我有一个关于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的方式。
答案 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
}