Ahoj,
učím se teď v SFML pracovat s TCP a UDP packety a narazil jsem na problém, se kterým si nevím rady. Protože SFML UDP socket musí vědět, kdo mu posílá data, aby je dokázal přijmout a obvykle serverové aplikace neví kdo a odkud se na ně bude připojovat, přišlo mi jako dobré řešení udělat si k hlavnímu cyklu programu vlákno, které bude na TCP socketu přijímat nové spojení a ve chvíli, kdy přijde, vrátí jeho IP adresu.
Hlavní cyklus programu si pak může IP adresu přebrat a vesele začít komunikovat s dalším klientem. Co však neumím, tak je ta část, kdy by hlavní vlákno zjistilo, že to vedlejší skončilo svou činnost, zpracovalo vrácenou adresu a znovu vedlejší vlákno spustilo. Napadá mě leda mít globální proměnnou, která by nebyla chráněna mutexem (pokud je vůbec možné mutexem chránit jednu specifickou proměnnou pro jedno specifické vlákno) a pokud by se její hodnota změnila na true vlivem vedlejšího vlákna, tak by si teprve to hlavní šáhlo do konkrétního místa v paměti pro IP adresu nového klienta.
Je to validní způsob nebo totální blbost? Co byste doporučili?
Díky předem za rady