Wielowąkowość

0

Witam !

Przykładam się do napisania programu /konkretnie gry sieciowej / multiplayer.Gracze posiadając programy "klientów" łączą sie z programem "serwer" który zarządza całą grą .I tu nasówa mi się pewien problem .Czy program "serwer" musi być napisany z wykorzystaniem wątków ? / gracze będą grali w pokojach(1 pokój -2 graczy),liczba pokojów może być duża tzn 40 /. Czy ktokolwiek miał już doczynienia z wielowątkowością , lub z podobnym zagadnieniem ?

Pozdrawiam wszystkich programistów !!!
Bitronx

0

no tak: popatrz jeżeli chodzi o delphi:

Będziesz musiał wykorzystać wątek w komponęcie :) ale nie o to chodzi

kazdy zgraczy bęzie przesyłał informacje do programu "serwer"

więc niezastąpionym sposobem jest

funkcja if = then else lub if == {} - w C++

Jeżeli nie o to ci chodziło to sorry - powiedz tak jaśniej o co ci biega - ODPOWIEM na 100% :)

0

Jeżeli miałbym używać komend if warunek then .... to program serwer działałby strasznie wolno.Chodzi mi o to iż w jednej jednostce czasu musi obsłużyć np. 4 pokoje i dlatego wydaje mi się że użycie wątków jest tutaj jak najbardziej wskazane.
Więc jeżeli ktoś ma jakiekolwiek doświadczenia z pisaniem aplikacji wielowątkowych to niech da zanać na forum.

0

Mi sie wydaje ze dobrze by bylo zrobic wielowatkowosc i odpowiednio ją zsynchronizowac. Czytalem duzo o tym no ale wlasnorecznie progsa bym nie napisal :) Fajnie jest to wyjasnione w ksiazce Pasłwskiego Andrzeja - Delphi 5, ale wydaje mi sie ze na necie tez pewnie gdzies jest.--pozdrowienia

0

No wiesz :) nie wiem jakiego typu komendy będą przesyłane do "serwer"

ja piszę tak jak umiem najlepiej a co do tego if to przeciez twoje aplikacje uzywają tylko jednego portu. Jak dla mnie jest spoko :) Ale wielowątkowość jest też tutaj wskazana. (ja napisałem jak mi by było najlepiej)

Pozdrawiam

0

Nie mam pojecia jak kozystac z watkow w Delphi
ale piszac serwer i klienta ftp w c++ robilem to tak

przy uruchomieniu serwera on odpalal np 50 instancji samego siebie
z czego 49 szlo lulu (bylo usypiane) jeden czekal na polaczenia . Jezeli jakis klient sie polaczyl to byl budzony jeden z watkow i przekazywana byla do niego sesja denego uzytkownika . W przypadku gdy podlanczal sie 51 user bylo tworzonych odpowiednio wiecej nowych watkow :-)

Co do poruszanego tematu synchronizacji to musialbys synchronizowac tylko te fragmenty kodu gdzie sa zmieniane dane majace wplyw na dzialanie innych watkow .

W twoim przypadku widze to tak :
Nie musisz tworzyc wielu instancji programu na dzien dobry poniewaz masz malo zaplanowanych klientow . Glowny watek serwera czeka na polaczenia i w przypadku akceptacji nowego tworzy nowy watek cala obsulge przekazuje do tego watku i to cale jego zadanie . Cala reszta zajmuje sie watek :-)

Mozesz takze na starcie zrobic watek nadzorce (w elektronice to jest Watch DOG) ktory np zbiera dane o punktach czy o stanie zaawansowania danego gracza no i na tej podstawie mozesz przewidywac np nowy ruch :-) ale o tym juz pisza w ksiazkach o teorii gier i sztucznej inteligencji .

pozdrawiam wojta$--Lets make linux better :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1