我在做一个网上判卷的Asp.net(C#)程序,挺复杂的,库为Oracle,在分配卷纸的问题上就卡住了。有30个老师,判几万张卷纸,要随机给他们分配卷纸,条件是:两个人或两个人以上不能同时判同一张卷,某个老师判完了某张卷纸就不能再判这张卷纸,卷纸出分或为问题卷(见后面解释)就不能再判。出分(和出问题)条件:每个卷纸第1次判为1评,第2次判为2评,如果|1评-2评|<4,出分为(1评+2评)/2;否则就3评,以此类推,到4评还没出分就判为问题卷。我想利用线程分配卷纸(如果直接写不用线程,不计算完不会显示网页),希望当某老师登陆时计算出他应分配的卷纸和点"下一张"应分配的预设卷纸,在点"下一张"时给出之前计算出的预设卷纸,并给出一个线程计算他再次点"下一张"应分配的预设卷纸,对于计算老师点"下一张"算出的预设卷纸时应不把在他之前分配的其他老师的没打分的预设卷纸计算在内,这个线程应如何写呢?谢谢了!

解决方案 »

  1.   

    在ASP.NET中每一个用户在服务器端使用同一个进程aspnet_wp(win2003有些不同),对于每一个用户该进程分配一个线程来处理用户的请求,不知你为什么要自己建立一个线程来处理你的问题。
    说它是一个线程问题不如说它是一个算法问题,算法你写的很清楚只要用代码实现就可以了。该问题也可以看成一个数据库并发的问题,怎样互斥的访问资源等。只要处理好标志位我想应该不是什么难题。
      

  2.   

    If I understand you correctly, it has nothing to do with 线程try to modify your table, add one or two columnsBeingScoredByID   Stage
    the teacher's ID   1BeingScoredByID by default is set to 0when you give 卷纸, recored 老师's ID thereof course, what if 老师 never returned the score or the session timedout, then you need to clean up this column...
      

  3.   

    cuike519和saucer说得很对!
      对呀,有好的算法(数据量是很大的呀,数据表要将近6,7百万条呀,还要随机,判一段时间就更麻烦了),就帮帮忙呀!我是想对于Web来说,不用线程有可以边计算边显示的好方法吗?主要老师可不能等呀。比如,他点"下一张"计算(不论是要显示的,还是预显示的,占用主线程Web页要等计算完才显示呀)等着这些老师可不干呀!我是想利用老师判卷的时间来分配他的下一张卷。