我使用工作队列推迟工作。由于我事先知道我想要处理多少个工作项,因此我使用该数字初始化一个原子变量。我将进程当前状态设置为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);
?>
并将其传递给下一个工作队列例程。两者都有效。但我不确定它是否有效或是否正确。