你的意思是,要让每个服务器都去获取没有被执行过的<或者是说最近没有被执行过的>任务。 我在想可不可以用一个队列,将所有未执行的任务都放到队列里面,然后每个服务器的每个线程都从队列里面去拿任务,也就是出队列。如果有新的状态为0的任务出现,则入队列。 本人实力不够,暂时只想到了这个拙劣的想法。
[quote=引用 1 楼 ivan_070 的回复:] 我有一个解决办法,感觉不是太好。 每个线程都查询出10条status为0的记录, 遍历每一条,select * from task where id=xxx for update 如果查询出来status是0,则update为1,返回。 请问还有没有比较好的办法。
有个task表, 主键是自增量,其中还有一个status字段,表示任务的状态,0是等待执行;1是执行中;2是执行完成 我们有多台服务器来共同完成任务,每台服务器有多个线程。 每个线程独立执行,从task中获取一个status为0的任务,将status设置为1。 请问怎么让每个服务器上每个线程都能获得一个不重复并且状态是0的任务。 不要用id除以某个值取余数,因为这样会导致有些服务器很忙,有些很空闲。
我有一个解决办法,感觉不是太好。 每个线程都查询出10条status为0的记录, 遍历每一条,select * from task where id=xxx for update 如果查询出来status是0,则update为1,返回。 请问还有没有比较好的办法。
62,614
社区成员
307,326
社区内容
加载中
试试用AI创作助手写篇文章吧