我正在使用C语言的pthreads进行编程。
我有一个父线程,需要创建4个子线程,它们的id分别为0、1、2、3。当父线程获取数据时,它会将数据拆分并分配给4个不同的上下文变量,每个子线程一个。子线程必须处理这些数据,同时父线程应该等待这些线程完成。一旦这些子线程已经执行完毕,它们将在相应的上下文变量中设置输出,并等待(以便重用)。一旦父线程知道所有这些子线程都完成了这一轮,它就会计算全局输出并将其打印出来。现在,它在等待新的数据(子线程尚未被杀死,它们只是在等待)。
如果父线程获得更多的数据,则会重复上述过程-尽管使用已经创建的4个线程。
如果父线程收到一个终止命令(假设是特定类型的数据),它将指示所有子线程终止自己。现在,父线程可以终止。
我是一名硕士研究生,我遇到了上述情况的需要。我知道可以使用pthread_cond_wait、pthread_Cond_signal实现这个功能。我已经编写了代码,但它只是无限运行,我无法弄清楚原因。
我猜想,我编写的方式过于复杂。了解如何实现这一点将非常有帮助。如果需要,我可以发布一个简化版本的代码,以显示我正在尝试做什么(尽管我认为我的方法是错误的!)......
请问您如何使用pthread实现这种情况?
我有一个父线程,需要创建4个子线程,它们的id分别为0、1、2、3。当父线程获取数据时,它会将数据拆分并分配给4个不同的上下文变量,每个子线程一个。子线程必须处理这些数据,同时父线程应该等待这些线程完成。一旦这些子线程已经执行完毕,它们将在相应的上下文变量中设置输出,并等待(以便重用)。一旦父线程知道所有这些子线程都完成了这一轮,它就会计算全局输出并将其打印出来。现在,它在等待新的数据(子线程尚未被杀死,它们只是在等待)。
如果父线程获得更多的数据,则会重复上述过程-尽管使用已经创建的4个线程。
如果父线程收到一个终止命令(假设是特定类型的数据),它将指示所有子线程终止自己。现在,父线程可以终止。
我是一名硕士研究生,我遇到了上述情况的需要。我知道可以使用pthread_cond_wait、pthread_Cond_signal实现这个功能。我已经编写了代码,但它只是无限运行,我无法弄清楚原因。
我猜想,我编写的方式过于复杂。了解如何实现这一点将非常有帮助。如果需要,我可以发布一个简化版本的代码,以显示我正在尝试做什么(尽管我认为我的方法是错误的!)......
请问您如何使用pthread实现这种情况?