gpt4 book ai didi

c - 如何使用 POSIX 线程使用线程标识符调用线程函数?

转载 作者:行者123 更新时间:2023-11-30 17:14:58 24 4
gpt4 key购买 nike

我是 posix 线程的新手。我正在开发一个项目,其中一个组件在初始化时创建所有 posix 线程。另一个组件必须请求池管理器是否有任何空闲线程。如果空闲,池管理器返回线程处理程序,另一个组件将其数据移交给该线程处理程序。我有两个问题:

  1. 初始化时,线程的创建意味着调用 pthread_create() 函数。因此,线程执行 pthread_create() 中提到的例程并退出。池管理器如何识别空闲线程?

  2. 如果线程在其例程中等待其数据,那么其他组件如何使用线程处理程序将其数据移交给线程。

最佳答案

通常您使用互斥体和条件变量以及一些共享内存结构。例如,您将创建一个数组、一个互斥体和一个条件变量。那么池中的工作线程将:

  1. 锁定互斥体
  2. 等待条件变量(互斥锁会自动为您释放)
  3. 一旦 wait 返回,就意味着 cond var 收到信号(并且互斥体再次为您锁定)
  4. 从数组中删除该工作
  5. 解锁互斥锁(或返回 (2)

在想要向池提交作业的客户端线程中:

  1. 锁定互斥体
  2. 将工作添加到数组
  3. 向条件变量发出信号

有很多关于此的教程,例如 https://computing.llnl.gov/tutorials/pthreads/#ConVarCreation

关于c - 如何使用 POSIX 线程使用线程标识符调用线程函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30092653/

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