现在编写一任务系统,如别人发布一个任务,很多人会去取得这个任务,然后完成这个任务,
如下,A用户发布了一个任务,任务量是100,
Taskid tasknum
1 100现在系统客户端有200用户在等待任务,如果此任务一发布,马上会有200个用户同时查询并取到上条任务,然后在客户端来完成获取的任务,这样就超过了任务的总量,有什么机制能避免这个问题
如下,A用户发布了一个任务,任务量是100,
Taskid tasknum
1 100现在系统客户端有200用户在等待任务,如果此任务一发布,马上会有200个用户同时查询并取到上条任务,然后在客户端来完成获取的任务,这样就超过了任务的总量,有什么机制能避免这个问题
用户取任务时:
Select * From XX表 Where tasknum>UserCount
此时把4个字段全取下来,然后UserCount+1
Update XX表 Set UserCount=UserCount+1 Where taskid=@taskid and tasknum>UserCount
再判断update影响的行数,如果为0,说明被已经到达数量了,获取任务失败,如果为1则成功。