关于队列读取任务问题?
现有20个任务 在数据库里同时有5个线程同时执行这些任务 流程应该是:读取数据库->判断任务是否在执行中->否->执行但是同时存在多个线程处理时 怎么保证 某个任务只被其中一个线程执行
回复
1个回答

test
2024-07-15
开事务, 使用 for update 查找状态为未执行的任务, 把任务状态改成 执行中结束事务, 执行任务, 最后更新任务状态为已执行.
select for update 可以锁表的, 不会有两个mysql连接同时查到相同的内容.
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容