关于队列读取任务问题?

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

阅读 1.5k
1 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题