Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Wie ist die Windows API Funktion EnterCriticalSection implementiert?

  Alt 11. Okt 2012, 15:06
Arbeite an einer Anwendung mit möglicherweise hunderten von Threads, und die soll was beschleunigen, also sollte sie nicht die Prozessorzeit aufsaugen.
Je nachdem, worauf der Thread warten muss, ist neben der CriticalSection bei massiv parallelen Systemen auch immer mehr IOCP im Einsatz - hunderte oder tausende Threads sind damit "verlustlos" möglich. IOCP ist nicht nur auf Netzwerk / Socketprogrammierung beschränkt:

I/O completion port's advantages and disadvantages

Zitat:
I/O completion ports are awesome. There's no better word to describe them. If anything in Windows was done right, it's completion ports.

You can create some number of threads (does not really matter how many) and make them all block on one completion port until an event (either one you post manually, or an event from a timer or asynchronous I/O, or whatever) arrives. Then the completion port will wake one thread to handle the event, up to the limit that you specified. If you didn't specify anything, it will assume "up to number of CPU cores", which is really nice.
-> man kann eine praktisch unbegrenzte Anzahl Threads durch einen completion port blockieren lassen, bis ein Event eintrifft (entweder ein selbsterzeugtes oder ein Timer-Event oder ein asynchrones I/O Event). Dann wird der Completion Port einen Thread aufwecken, oder mehr (Vorgabe: so viele wie es CPU Kerne gibt).

(Es gibt IOCP API Implementierungen auch für Delphi als open source).

Is there a I/O completion port based component for Delphi?
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat