Portál AbcLinuxu, 8. června 2025 20:27
Pokud to ošetříte mutexem, neviděl bych v tom problém. Nebo když použijete streamové funkce, které to zamykají automaticky.
Este som rozmyslal nad tym, ze potom ako uzivatel napise spravu modifikujem mnozinu soketov cakajucich na zapis. toto vsak tiez nie je asi najbezpecnejsie riesenie
Proč? Ale asi bych použil spíš poll()
, tam si nemusíte hrát s těmi nepřehlednými množinami a jen přehazujete jeden příznak. Nebo jste to myslel tak, že byste změnil množinu, zatímco v druhém threadu běží ten select()
? To by asi opravdu nešlo.
poll()
, až bude možné číst, a mutex by se zamykal až na samotný read()
. Ve druhém threadu by se zamkl mutex na zápis, když by bylo potřeba. To by mělo projít, ale nezkoušel jsem to.
poll
- pole se nachystalo jenom jednou a čistěji. Také jsem psal kecací prográmek (jako úlohu do prográmka v C). Žádná vlákna ani podprocesy jsem nepotřeboval ani u klienta, ani u serveru. Jinak se mi osvědčilo u klienta hlídat funkcí poll
i standardní vstup, takže šlo snadno obsloužit jak psaní na klávesnici, tak přijímání zpráv.
select()
nebo poll()
. Řešení pomocí threadů nebo samostatných procesů je vhodnější tam, kde je větší množství klientů a vyřízení požadavku trvá netriviální dobu (protože během vyřizování jednoho požadavku se nemůžete bavit s dalšími klienty).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.