Bergmann89 hat geschrieben:es wird sicher keine echte EventQueue, ich leite einfach ne Klasse von TThread ab, der eine mit CriticalSections geschützte Queue hat. Dann schreib ich eine Mehtode, mit der andere Threads eine Art Message bei dem Thread abgeben können. Im Execute des Threads arbeite ich dann die Liste ab
Eine einfache Queue kannst Du natürlich mit Threadlist machen. Das ist dafür vorgesehen und deshalb ist da automatisch eine Critical Section drin (um die konkurrierenden Zugriffe auf die Queue zu schützen, nicht um das Warten eines Threads auf ein Ereignis zu realisieren. Du brauchst beides).
Die Frage ist nun wie ein Thread, der gerade nichts zu tun hat, darauf wartet, dass er ein Aufgabe bekommt, ohne dass er CPU-Zeit verbrät und die anderen Threads dadurch hemmt. Wenn Du das ganze
nicht machst, um eine Beschleunigung des Projektes durch Multi-Processing zu erreichen (dann wäre auch TThreadlist ein Klotz am Bein -> siehe "Lockfree FiFo"), gibt es da eine ganze Menge einfacher Möglichkeiten. Es geht vermutlich mit einer Critical Section (nicht sehr schön) oder TEvent (schöner) Auch "Suspend" sollte möglich sein (wie ich finde: ganz hässlich). Theoretisch kannst Du auch die Threads immer sterben lassen und neu kreieren. Das ist aber in jedem Fall die langsamste Methode. (Deshalb verwenden z.B. Webserver meist einen "Threadpool". Sowas ist in "Indy" implementiert).
-Michael