- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Bekékült a Pixel 10a
- Apple iPhone 16 Pro - rutinvizsga
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- iPhone topik
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Poco F7 – bajnokesélyes
- Xiaomi 15 - kicsi telefon nagy energiával
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Xiaomi 15T Pro - a téma nincs lezárva
Új hozzászólás Aktív témák
-
bpx
őstag
válasz
Gregorius
#1622
üzenetére
igen, erről is olvastam
csak átmenetileg oldotta meg a problémát, közben ugyanúgy megszívtam class-szal isúgyhogy segítséget kérnék

adott a következő szituáció:
IIS-en fut egy WCF szolgáltatás, amivel Silverlight kliensek kommunikálnak duplex módon
(silverlightos sakk, emberek belépnek a szerverre, majd egymás ellen tudnak játszani) - de ez lényegtelen, a konkurenciával van a gond
(azt szeretném észlelni, amikor meghal egy kliens, hogy a másik játékos ne csak üljön és várjon a semmire, hanem tudjam jelezni neki)
az ötlet a következőa szolgáltatásban van egy
static List<ClientInfo> clients;
private static readonly object syncLock = new object();ahol
public class ClientInfo
{
public string name; // játékos neve
public IChessClient client; // callback channel referencia
public DateTime lastreply; // utoljára mikor jött tőle válasz
}amikor a kliens hív a szerveren egy Login()-t, az csinál neki egy ClientInfo objektumot, és beteszi a listába
a szolgáltatás statikus konstruktorában csinálok 2 threadet:
- az egyik pl. 20 mp-ként küld egy kérést a klienseknek (PingRequest())
ezekre 1-2 mp múlva jön egy aszinkron válasz, mégpedig úgy, hogy a kliensek meghívják a szolgáltatás PingReply() fv-ét, ami bejegyzi a fenti listába, hogy most ebben az időpontban jött utoljára válasz adott klienstől- a másik meg pl. 60 mp-ként ellenőrzi a fenti clients listát, hogy kik azok, akik már mondjuk 2 perce nem válaszoltak
ezeket törli a clients listából, az ellenfelüket meg (ha van) értesítiahányszor hozzáférek a clients listához, mindig lock(syncLock)-ot használok a kölcsönös kizárás miatt
tehát 3 fő thread van (végrehajtó, "pingelő", ellenőrző)
a "végrehajtó" (Login(), PingReply()) csak ír
a "pingelő" csak olvas, és mindig helyes értéket lát
a probléma az ellenőrző threaddel van, ez olvassa és módosítja is a clients listátha csak 1 kliens van bejelentkezve, akkor minden megy rendben
ha több, akkor 1 db kliensnél nem látja a ClientInfo.lastreply aktuális értékét, hanem csak a létrehozáskori értéket (Login()) látja - viszont az összes többi kliensnél látja a friss értékeket
ez az 1 db ugye nem frissül, ha letelik X perc, a szerver úgy veszi hogy halott, törli
ilyenkor megint lesz 1 db másik, akinél nem látja az ezután érkező friss értékeket, őt is kiszórja
és ez így megy tovább, egyesével kiszór mindenkit amíg csak 1 játékos marad az egész szerveren, úgy hogy közben mindenki szépen válaszolt és folyamatosan volt kommunikáció, "ping"-re is jöttek válaszokha esetleg valaki eljutott volna idáig az olvasásban (
), [link] van kód is, csupaszítva, csak a lényeget meghagyva
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Kerékpárosok, bringások ide!
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Linux Mint
- Eredeti játékok OFF topik
- Bekékült a Pixel 10a
- Proxmox VE
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Gyúrósok ide!
- Apple iPhone 16 Pro - rutinvizsga
- One otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- új bontatlan iPhone 16 Pro Max 256GB black titanium fekete titán független Apple 1 év garancia
- Wharfedale Slim Bass 8 - 400W
- WD Black SN850X 8TB M.2 NVME PCI-E 4.0 x4 - Hűtőbordás- Új - 7200-6600 MBs - Eladó!
- WD Black SN850X 8TB M.2 NVME PCI-E 4.0 x4 - Új - 7200-6600 MBs - Eladó!
- P14s Gen2i 27% 14" FHD IPS i7-1165G7 T500 32GB 512GB NVMe magyar vbill ujjlolv IR kam gar
- Magyarország piacvezető szoftver webáruháza
- Bomba ár! Lenovo X1 Carbon G7: i5-8365U I 16GB I 512GB SSD I 14" FHD I HDMI I Cam I W11 I Gari!
- Bomba ár! Fujitsu LifeBook E544 - i5-4GEN I 8GB I 128SSD I 14" HD+ I DP I Cam I W10 I Garancia!
- Bomba ár! Dell Latitude 5300 - i5-8GEN I 8-16GB I 256SSD I 13,3" I HDMI I Cam I W11 I Gari!
- GYÖNYÖRŰ iPhone 13 Pro Max 1TB Graphite - 1 ÉV GARANCIA - Kártyafüggetlen, MS3694
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest


), 

