Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno mysql++ a multithread aplikacia

Zdravim.
Nema niekto skusenosti s mysql++ a viac vlaknovymi aplikaciami v c++? Vkladna su vytvarane a riadene prostriedkami pthread. Mam aplikaciu, ktora je tvorena viacerymi vlaknami a tie sa delia do dvoch skupin:

1. reader vlakna (viacero vlakien) - pracuju s globalnymi datami, ziskanymi z DB (iba ich citaju)
2. writer vlakno (jedno vlakno) - precita data z DB a ulozi ich do globalnych premennych

Tieto vlakna su vzajomne synchronizovane cez mutexi z kniznice pthread. Synchronizacia prebieha v nasledovnych etapach:

1. writer uzamkne data pre citanie vlaknami (reader), ktore este nezacali svoju cinnost, aby mohol obnovit data nacitanim z DB.
2. caka na vlakna (reader), ktore uz zacali svoju cinnost kym ju nedokoncia.
3. ked nie su ziadne pracujuce vlakna (reader), obnovi data z DB
4. odomkne globalne data (prebudi vsetky cakajuce vlakna - reader)
5. uspi sa na definovany casovy interval.

Problem nastava, ked caka na vlakna aby dokoncili svoju cinnost. Vzdy sa jedno vlakno zastavy asi na operacii mysql::update, ktora je poslednou operaciou pred ukoncenim cinnost vlakna a predat riadenie vlaknu writer. Vsetky vlakna bezia v cykle, cize tak ako boli vytvorene pri spusteni aplikacie, tak existuju neustale po celu dobu aplikacie az po jej skoncenie, pricom cakaju na poziadavky od externeho zdroja.

Ak sa uz niekto stretol s podobnym problem zaujimalo by ma ako vyriesil.

Za kazdu prinosnu odpoved vopred dakujem.

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny