现有20个任务 在数据库里
同时有5个线程同时执行这些任务
流程应该是:读取数据库->判断任务是否在执行中->否->执行
但是同时存在多个线程处理时 怎么保证 某个任务只被其中一个线程执行
现有20个任务 在数据库里
同时有5个线程同时执行这些任务
流程应该是:读取数据库->判断任务是否在执行中->否->执行
但是同时存在多个线程处理时 怎么保证 某个任务只被其中一个线程执行
1 回答2.6k 阅读✓ 已解决
5 回答1.5k 阅读
2 回答2.2k 阅读
3 回答2.4k 阅读
3 回答782 阅读✓ 已解决
1 回答2.4k 阅读
1 回答1.1k 阅读✓ 已解决
开事务, 使用 for update 查找状态为未执行的任务, 把任务状态改成 执行中
结束事务, 执行任务, 最后更新任务状态为已执行.
select for update 可以锁表的, 不会有两个mysql连接同时查到相同的内容.