Portál AbcLinuxu, 13. května 2025 18:39
Nějak jsem nepochopil, že se chceš vyhnout binárnímu čtení.Myslel som to tak, ze tie struktury v pamati budem moct citat podobne ako by ich cital proces ktoremu patria. Napr. takto st_rec.name. A nemusel to citat ako nejaky prud dat, kde by som musel vediet kde jedna premenna konci a ina zaciana. Takze hovorite, ze zdielana pamat. Tak skusime.
nebo rodič po získání informací tyto "natlačí" do potomka, který si je zapamatujemohli by ste toto konktretne specifikovat, ako by sa to dalo urobit? Musela by tam byt nejaka aktivita na strane potomka. resp. musel by data nejak spracovavat?
fread(ptr, sizeof(*ptr), 1, stream); ptr->name
není už tak hrozné. Akorát by se v potomkovi muselo zacházet s dvěma vstupy naráz (UDP a tahle roura), a to je trochu složitější - buď přes přes select() nebo neblokující režim. Sdílená paměť bude opravdu lepší řešení, pokud je možné ji použít.
(pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED)
. Do přílohy jsem kdyžtat sesmolil ukázkový program, který dělá zhruba to co xsustek chce (abych si vyzkoušel, že to co radím doopravdy funguje). Dost by mě zajímalo srovnání výkonu oproti jiné meziprocesové synchronizaci...
Nechcem k tomu pouzit vlakna.
To je docela chyba, protože právě tohle je jedna z největších výhod threadů. Můžete sice použít sdílenou paměť, ale tím si nepomůžete, stejně budete muset řešit otázku synchronizace (např. pomocí semaforů).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.