Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Selbstgebauter Threadpool funktioniert nicht

  Alt 11. Mär 2009, 16:35
Das ist aber kein Grund zu pollen. Es gibt bei den Winsockets zwei Möglichkeiten, ereignisgesteuert zu arbeiten, nämlich mit WSAAsyncSelect und WSAEventSelect. Wenn dabei bei einem Socket etwas anliegt, wird eine Nachricht geschickt bzw. ein Event gesetzt. Wenn dir die Methode mit den Nachrichten nicht schnell genug ist, erstelle dir für jedes Socket ein Event und verwende WSAEventSelect. Wenn du dann allerdings mehr als 64 Sockets hast, brauchst du einen weiteren Thread. Wenn einer dieser Threads dann feststellt, dass ein Ereignis eingetroffen ist, kann er den entsprechenden Job an den Threadpool weiterreichen. Das sollte nicht langsamer sein als die Methode mit dem Polling, aber bei geringer Last deutlich weniger CPU-Zeit verbrennen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat