#826

Postav front úloh, ktorý sa škáluje bez kolízií

V databáze je front úloh — tabuľka jobs so stavom pending pre nevykonané riadky. Päť workerov sa naň pozerá súbežne: každý chce schmatnúť najstaršiu úlohu a označiť ju ako „v práci“. Bežný zámok na úrovni riadka s limitom spôsobí, že sa všetkých päť workerov nahromadí na tom istom riadku a serializuje sa. Liekom je preskočiť riadky, ktoré sú už zamknuté, a vziať ďalší voľný: každý worker dostane vlastnú úlohu a paralelizmus funguje bez kolízií. jobs(id SERIAL, status, payload) obsahuje štyri riadky v stave pending (a, b, c, d). Vezmi z jobs jednu úlohu v stave pending s najmenším id, prepni ju na running — ostatné tri zostávajú pending.

Tu sa zobrazí výsledok vášho dotazu