ну есть таблица с полями id, login, password
Добавляем дополнительное поле с именем, например, hash, которое по умолчанию null
Далее хотим взять логин и пароль, которые не взял другой поток. Для этого генерируем криптостойкую случайную строку. C# метод
Path.GetRandomFileName подойдет.
Делаем апдейт вида
UPDATE таблица SET hash='наша_рандомная_строка' WHERE hash IS NULL LIMIT 1;
Т.е. мы помечаем одну строку, где хэш пустой.
Теперь мы можем без проблем сделать селект к этой строке через хэш, который мы сами сгенерировали и ни один другой поток эту строку не возьмет.
Важно не забыть занулить хэш после отработки строки.
Потенциальные проблемы у этого метода - по какой-то причине не занулить строку после отработки как итог - строка зависнит в "рабочих" навсегда, пока вручную не подправить. Решение - усложнить запросы, добавив в таблицу дополнительное поле, отвечающее за время, когда строка будет свободна вне зависимости от того, null в поле или нет