Sukurkite užduočių eilę, kuri lygiagretina be kolizijų
Duomenų bazėje yra užduočių eilė — lentelė jobs su būsena pending neįvykdytoms eilutėms. Į ją vienu metu žiūri penki darbininkai: kiekvienas nori pagriebti seniausią užduotį ir pažymėti ją kaip «vykdoma». Paprastas eilutės užraktas rašymui su limitu priverčia visus penkis darbininkus atsitrenkti į tos pačios eilutės užraktą ir stovėti eilėje. Vaistas — praleisti jau užrakintas eilutes ir paimti kitą laisvą: kiekvienas darbininkas gauna savo užduotį, ir lygiagretumas veikia be kolizijų.
Lentelėje jobs(id SERIAL, status, payload) yra keturios eilutės būsenoje pending (a, b, c, d). Paimkite iš jobs vieną pending užduotį su mažiausiu identifikatoriumi, perveskite ją į būseną running — likusios trys lieka pending.
Prisijunkite, kad matytumėte pateikimų istoriją
PrisijungtiPrisijunkite, kad naudotumėte DI mentorių
Prisijungti