我在 C 中使用 pthreads 进行编程。
我有一个父线程需要创建 4 个 ID 为 0、1、2、3 的子线程。当父线程获取数据时,它将设置拆分数据并将其分配给 4 个单独的上下文变量 - 每个子线程一个. 子线程必须处理这些数据,同时父线程应该等待这些线程。一旦这些子线程完成执行,它们将在其相应的上下文变量中设置输出并等待(以供重用)。一旦父线程知道所有这些子线程都完成了这一轮,它就会计算全局输出并将其打印出来。现在它等待新数据(子线程还没有被杀死,它们只是在等待)。
如果父线程获得更多数据,则重复上述过程 - 尽管已经创建了 4 个线程。
如果父线程接收到一个kill命令(假设一种特定类型的数据),它向所有子线程指示并且它们自己终止。现在父线程可以终止。
我是一名硕士研究生,我遇到了上述场景的需求。我知道这可以使用 pthread_cond_wait、pthread_Cond_signal 来完成。我已经编写了代码,但它只是无限期地运行,我不知道为什么。
我的猜测是,按照我的编码方式,我把场景过于复杂化了。了解如何实现这一点将非常有帮助。如果有需要,我可以发布我的代码的简化版本来展示我正在尝试做的事情(即使我认为我的方法有缺陷!)...
你能给我一些关于如何使用 pthreads 实现这个场景的见解吗?