我是posix线程的新手。我正在开发一个项目,其中一个组件在初始化时创建所有posix线程。如果有任何线程空闲,则另一个组件必须请求池管理器。如果空闲,池管理器返回线程处理程序,另一个组件将其数据切换到该线程处理程序。我有两个问题:
初始化时,创建线程意味着调用pthread_create()函数。因此,线程执行pthread_create()中提到的例程并退出。池管理器如何识别免费线程?
如果线程在其例程中等待其数据,那么其他组件如何使用线程处理程序将其数据切换到线程。
答案 0 :(得分:0)
通常使用互斥锁和条件变量以及一些共享内存结构。 例如,您将创建一个数组,一个互斥锁和一个条件变量。然后你在池中的工作线程将:
在想要将作业提交到池的客户端线程中:
有很多关于此的教程,例如: https://computing.llnl.gov/tutorials/pthreads/#ConVarCreation