情况如下:
    1.数据库中有一个表叫  task 表。里面每项都是一个任务。
    2.有10个工作线程,要从task 表中锁定一个任务(有锁定时间)。
    3.假设 W(a) 锁定了一个任务 T(a)。这个时候其他工作线程是不能锁定这个任务的。
    4.W(a)处理完任务,要将任务T(a)标记为已经处理。
    5.如果W(a)长时间不返回,(锁定时间 --》》 当前时间)大于系统允许的范围,则其它工作者可以锁定这个任务进行处理。请问,数据库访问部分使用存储过程吗?如何写呢。     假设存储过程名称 gettask();
     参数为每个工作者的唯一标识符wid。
     传出为锁定的任务或者空。如何写呢。     本人新手,请指教。

解决方案 »

  1.   

    用IF ELSE控制语句就可以了,自己先写。遇到问题再说。
      

  2.   

    可以在task表里增加一个状态字段,判断此任务是否处于锁定状态 如果处于锁定状态的话 然后判断其锁定时间和当前时间相比较 如果当前时间大于锁定时间,时间差相差为你认为的线程运行的最大时间,那么进行下一个线程