COGS 评测排队问题

其实在做COGS之前,看到许多评测系统Pending...Waiting.....Running.....Accept这种格式,尤其是以 Vijos和pku为代表,交了题还看不到结果,要在Status不断刷新等待。我对这种模式十分反感,更喜欢USACO人性化的方式,所以COGS开发初期是完全以USACO为蓝本做的,从文件提交方式可以看出来。 最初做的时候没有考虑排队,也就是开启多个线程,来多少评测多少,没有考虑共享CPU造成卡时不准问题。后来考虑到了,就给评测机加上了锁定功能,也引发了死锁问题。上个版本修正了死锁问题,但当OIER大量提交的时候会经常出现“当前没有空闲的评测机”的问题。有人要求加上Waiting队列,但我实在不想模仿Vijos,就自己想了一个解决方案。

实现评测和队列,评测页面、比赛评测页面、提交列表页面用Javascript重写,动态排队。全部由Ajax实现,无需刷新。

评测页面效果图 图1 图2 图3 图4

相关日志