在Linux-workqueue工作例程中:创建新的工作项并等待它完成

时间:2017-02-04 11:15:38

标签: c linux linux-kernel kernel

我使用工作队列推迟工作。由于我事先知道我想要处理多少个工作项,因此我使用该数字初始化一个原子变量。我将进程当前状态设置为schedule(),提交所有工作,然后使用current将进程发送到休眠状态。在最后的每个工作程序中,减少并测试原子变量。如果最后一个工作项已经完成,则该过程被唤醒。

有更好的方法吗?

我的实际问题是:如果我想在工作例程中推迟工作,我可以实现同样的目标吗?对于该过程,我将current传递给工作例程,然后将其用作唤醒调用的参数。我也能以同样的方式睡觉并唤醒工作程序吗?

编辑:我知道通过将struct completion从工作队列例程中传递到下一个工作队列例程来尝试它。作为第二种方式,我设置了<?php /* Function for check and remove blank and empty element from array */ function remove_blank($arra) { $newArr = array(); $total = count($arra); for($i = 0; $i <= $total; $i++) { if($arra[$i] != "" && $arra[$i] >= 0) { $newArr[] = $arra[$i]; } } echo "<pre>"; print_r($newArr); } $arra = array(1, 2, 0, 0,'', 0,''); remove_blank($arra); ?> 并将其传递给下一个工作队列例程。两者都有效。但我不确定它是否有效或是否正确。

0 个答案:

没有答案