gpt4 book ai didi

c++ - pthread C++ 中的 Obj-C performSelector OnThread

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:32 25 4
gpt4 key购买 nike

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

如果我有 Thread1 和 Thread2。

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

//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 的方法。

最佳答案

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

在 pure-c 中没有运行循环/消息泵的等价物,它们依赖于 guis(例如 iOS 等)。

唯一的选择是让线程 2 检查某种条件,如果已设置,则执行预定义的任务。 (这可能是一个全局函数指针,如果指针不为空,线程 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
}

关于c++ - pthread C++ 中的 Obj-C performSelector OnThread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17050746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com