1

我正在实施在线法官。用户的提交进入submission数据库的表中。该表有一个属性status,最初是Queued. submission我的程序连接到数据库并在带有状态的表中查看提交Queued,如果是,则选择其中一个并将状态转换为Assessing. 然后将提交编译并针对测试用例运行。然后根据结果将status属性更改为AcceptedWrong Answer
我的问题是,如果我在具有相同数据库的两台不同机器上运行我的程序,这两个程序可以给出并发问题。例如,如果我提交,它将有 status= Queued,现在假设第一个程序先读取它,然后再更改 status=Assessing,第二个程序也读取提交。现在没有错误,因为正在重新评估相同的提交。
但是在这种情况下仍然Mysql提供并发,或者我必须自己添加它。如果是,最好的方法是什么?

4

1 回答 1

1

可以用读锁来实现。有很好的文档示例http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html

于 2013-06-24T08:43:45.877 回答