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?