pthreads:在主线程上执行功能

| 我正在寻找类似可可的
-[NSObject performSelectorOnMainThread: withObject: waitUntilDone:]
方法。 所以基本上我有一个函数可以在一个单独的线程上执行一些工作,但是它必须执行一些需要在主线程上执行的同步调用。     
已邀请:
在可可中,消息被添加到运行循环中,并在其迭代过程中清除。 模拟这一点: 你会想要一个运行循环 抽象消息系统 和参考计数机制(大多数情况下) 一种将这些消息添加到运行循环以计划执行的方法 计时器将是一个很好的补充 要专门使用pthread接口来完成类似的操作,请先从条件ѭ1开始。 我不知道您要完成的工作具有1-1关系的pthread接口。条件也可以在没有运行循环的情况下运行,因此,如果您不重用运行循环实现,则可能需要将其带到表中。如果使用运行循环,则只需要一个锁即可将消息添加到具有运行循环的线程中。     
pthread是非常底层的抽象,因此没有简单的方法可以使用原始pthread。通常,您将需要写入文件描述符以唤醒主线程上的事件循环,然后向其传递指向您要运行的函数的指针。您甚至可以将指针值写入
pipe()
,然后让主线程执行它们。 要同步等待,您只需在这些执行请求对象上具有一个互斥量和条件变量,以及完成标志。让子线程在互斥体/ condvar /完成标志上等待,然后在主线程中(在互斥体下)设置该标志并向cvar发出信号。请求结构的清理将在子进程中完成。 更具体地说,如果您可以提及在主线程上运行了哪个事件循环,它将很有帮助。     

要回复问题请先登录注册