Игры изнутри опубликовали статью , в которой обсуждается использование ими модульного тестирования, ограничения модульного тестирования в отношении игр, в частности, и сервер автоматического функционального тестирования, который они создали, чтобы помочь с этим.
Изменить:
Я поискал в Google, чтобы проверить свой ответ: «Обработка очередей данных в SQL Server с помощью READPAST и UPDLOCK» . Прошли годы с тех пор, как я читал об этом решении и играл с ним.
Оригинал:
Если вы используете подсказку READPAST, то заблокированные строки пропускаются. Вы использовали ROWLOCK, поэтому вам следует избегать эскалации блокировки. Как я выяснил, вам также понадобится UPDLOCK.
Итак, процесс 1 блокирует 20 строк, процесс 2 займет следующие 20, процесс 3 - строки с 41 по 60 и т. Д.
Обновление также можно записать так:
UPDATE TOP (20)
foo
SET
ProcessorID = @PROCID
FROM
OrderTable foo WITH (ROWLOCK, READPAST, UPDLOCK)
WHERE
ProcessorID = 0
Обновить, октябрь 2011 г.
Это можно сделать более элегантно с помощью предложения OUTPUT, если вам нужно выполнить SELECT и UPDATE за один раз.
Вы можете использовать Service Broker. Также вы можете использовать процедуру sp_getapplock для сериализации доступа к вашим строкам - это устранит условия гонки:
«Поддержка параллелизма путем создания ваших собственных блокировок (мьютексов в SQL)» http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/06/30/855.aspx