Один из способов состоит в том, чтобы мастер-программа раздала сегменты дочерним потокам.
Другой способ - заблокировать таблицу, получить CEIL(N/#processes)
строк, где флаг = 0, обновить флаг до 2, затемснять замок.Затем следующий процесс будет продолжен, так как он получил блокировку, и поскольку flag = 2, он не получит эти строки.
У вас есть два способа заблокировать таблицу - вы можете либо заблокировать все, либо сделатьВЫБЕРИТЕ ... ДЛЯ ОБНОВЛЕНИЯ с ограничением (чтобы не получить слишком много строк).См .: ВЫБРАТЬ ДЛЯ ОБНОВЛЕНИЯ с SQL Server
Даже лучше, чем установка флага в 2, установить флаг для process_id.Затем все, что вам нужно сделать, это обновить все строки, чтобы распределить числа, а затем позволить процессу начать работу, каждая из которых проверяет только свои собственные строки.