0

我正在使用 Gearman 工作人员接受来自 MySQL 数据库的工作。这些工人找工作的程序是这样的:

SELECT foo, bar FROM jobs WHERE job_id = 'foobarbaz' AND status = 'WAITING';

现在,如果该查询返回一行,那么工作人员知道它被赋予了一个有效的工作并继续工作。但当然,风险是在工作时另一个工人也可能接手这项工作。

为了防止这种情况,我在想如何以原子方式选择继续工作所需的数据以及更新它的状态(如果它是有效的)?我可能想过使用作业 ID 对行状态进行更新,然后测试受影响的行,但不确定是否有更明智的方法来解决它。

谢谢。

4

0 回答 0