关于队列读取任务问题?

作者站长头像
站长
· 阅读数 17

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

回复
1个回答
avatar
test
2024-07-15

开事务, 使用 for update 查找状态为未执行的任务, 把任务状态改成 执行中结束事务, 执行任务, 最后更新任务状态为已执行.

select for update 可以锁表的, 不会有两个mysql连接同时查到相同的内容.

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