NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
tester
Člen
Avatar
tester:7.4.2015 8:37

Ahoj, mám takový dotaz.

Mám vytvořenou aplikaci pro komunikaci mezi více počítači pomocí TCPClient a TCPListener. Při startu aplikace nechám server běžet na novém vlákně.

server = new Thread(Server);
server.Start();

Ale přemýšlel jsem, jestli může nastat problém, kdy se serveru dotáže naráz více počítačů. Je proto lepší při každém připojení clienta

klient = server.AcceptTcpClient();

založit další vlákno pro vyhodnocení jeho dotazu (viz http://www.mikeadev.net/…r-in-csharp/) nebo další client počká dokud nebude dokončen předchozí dotaz??

Editováno 7.4.2015 8:38
 
Odpovědět
7.4.2015 8:37
Avatar
Eldan
Člen
Avatar
Eldan:7.4.2015 14:52

Jde o to jak chceš aby program fungoval. Pokud chceš asynchronní vyhodnocování požadavků klienta, pak je jednoznačně lepší založit nové vlákno. Pokud chceš zpracovávat požadavky jako frontu pak to prováděj na jednom (je u toho větší hrozba že jedna chyba položí celý program, u vláken máš tohle ošetřené). Taky jde o to jak rychle chceš klientům odpovídat - asynchroně ztrácíš kontrolu nad pořadím odeslaných odpovědí, synchronně budou klienti v závislosti na počtu požadavků ve frontě před nima čekat až na ně příjde řada, což může být občas dost dlouho.

Nahoru Odpovědět
7.4.2015 14:52
Unobfuscated executable == free source code
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.