Autor Wątek: Server: aplikacja wielowątkowa  (Przeczytany 4511 razy)

Offline Pirs01

  • Użytkownik

# Kwiecień 15, 2007, 16:39:50
Ale wtedy za każdym razem kiedy będe chciał obsłużyć dane połączenie będe musiał przeszukiwać nieraz znaczną część tablicy i wykonywać szereg porównań żeby skojarzyć wybrany kanał z konkretnym obiektem InfoOKliencie i takie rozwiązanie byłoby chyba jeszcze mniej wydajne niż to zaproponowane przezemnie?

Jeśli napisałem to:
Cytuj
Jedyne co mi przyszło do głowy to na potrzebę każdego klienta tworzyć nowy selektor i rejestrować w nim tylko jeden kanał i wtedy w klasie InfoOKliencie było by:
Selector polaczenie;zamiast:
SocketChannel polaczenie;
troche nie zrozumiale to rzecz w tym że gdybym tworzył dla każdego połączenia nowy selektor to wtedy obsługując szereg połaczeń robiłbym to w pętli:
while (InfoOKliencie.SelectionKey.selector().select() > 0 )
{
   ...
}
  
I wtedy gdy wybrany zostanie jakiś kanał wiem który obecnie obiekt typu InfoOKliencie jest obsługiwany i tym samym mam "wprost" dostęp do dodatkowych informacji zawartych w obiekcie typu InfoOKliencie bez potrzeby przeszukiwania tablicy w celu skojarzenia wybranego kanału z obiektem typu InfoOKliencie. Warunkiem jest tworzenie nowego selektora na potrzebę każdego kanału a jak już mówiłem rozwiązanie takie jest sprzeczne z ideą selektorów i dlatego zastanawiam się czy można to zrobić lepiej? A jeśli możliwe są tylko te dwa rozwiązania (nowy selektor dla każdego kanału lub tablica kojarząca kanały z obiektami InfoOKliencie) to które rozwiązanie jest wydajniejsze / rozsądniejsze?
« Ostatnia zmiana: Kwiecień 15, 2007, 17:22:25 wysłana przez Pirs01 »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline parmezan

  • Użytkownik

# Kwiecień 15, 2007, 17:19:40
Nie chcę być złośliwy, ale sugerował bym Ci poczytanie dokumentacji, sporo ciekawych rzeczy można tam znaleźć, np.
http://java.sun.com/javase/6/docs/api/java/nio/channels/SelectionKey.html
Cytuj
It is often necessary to associate some application-specific data with a selection key, for example an object that represents the state of a higher-level protocol and handles readiness notifications in order to implement that protocol. Selection keys therefore support the attachment of a single arbitrary object to a key. An object can be attached via the attach method and then later retrieved via the attachment method.
i dalej
http://java.sun.com/javase/6/docs/api/java/nio/channels/SelectionKey.html#attach(java.lang.Object) i http://java.sun.com/javase/6/docs/api/java/nio/channels/SelectionKey.html#attachment()

Offline Pirs01

  • Użytkownik

# Kwiecień 15, 2007, 17:29:32
Odrobina złośliwości mi się należy biorąc pod uwagę że nie zajrzałem do dokumentacji z góry zakładając że jest to problem z którym trzeba sobie poradzić samemu ::)  Dzięki parmezan!