Вы можете заблокировать строки несколькими способами, в postgresql: блокировки на уровне таблицы, блокировки на уровне строк и рекомендательные блокировки.
http://www.postgresql.org/docs/9.0/static/explicit-locking.html
В вашем случае, однако, блокировки не будет достаточно, если вы хотите хороший параллелизм:
update links
set processing = true
where id in (
select id
from links
where not processed
and not processing
limit 100
for update
)
returning *
Дополнительное поле processing
позволяет иметь несколько заданий для работы с разными наборами строк.