Komunikace mezi vlakny

Dalibor Straka dast na panelnet.cz
Sobota Září 15 20:26:41 CEST 2007


Ahoj,

mam program pouzivajici pthread a potrebuji udelat hack, aby jedno
vlakno mohlo poslat zpravu vsem ostatnim vlaknum. Coz se prostredkama
sdilene pameti prilis dobre nedela. Zprava musi zustat aktivni dokud
si ji nevybere posledni vlakno, ktere se navic muze seknout pri vypadku
site.

Uvazoval jsem o pipe() nebo o sys/ipc.h a sys/msg.h. Co byste
doporucili?

A o jake udalosti se jedna? Napr. "ukonci prenos c. 12", "nacti si
zmenu v datech na pozici 1234" apod. Doplnujici informace:
na poradi zprav nezalezi
pocet vlaken: desitky, ale ne stovky
pocet zprav od jednoho vlakna za sekundu: 0 - 100

Moje vlastni reseni pres fronty zpravy je desne pomale a uzkym hrdlem,
protoze na kazde vlozeni zpravy volam malloc() a na vybrani free().
Kdyz uz ipc budu predelavat, rovnou se poohlizim o necem
specializovanejsim na ultra rychlou komunikaci.

Diky za napady,
-- Dalibor Straka
P.S. Idealni by byla nejaka trumpeta do ktere by z jednoho konce mohl
kazdy rvat a vsichni by ho slyseli ;o).
P.P.S.  If a function be advertised to return an error code in the event
of difficulties, thou shalt check for that code, yea, even though the
checks triple the size of thy code and produce aches in thy typing
fingers, for if thou thinkest "it cannot happen to me," the gods shall
surely punish thee for thy arrogance.



Další informace o konferenci Linux