Forum: Programmieren allgemein
by Sir Rufo,
25. Mär 2014
Ähm, er hat nicht berichtet, dass sein System eingefroren ist, und das wäre der Fall, wenn 100 Threads die volle Aufmerksamkeit der CPU beanspruchen würden.
Können die auch gar nicht, da alle Threads in eine Liste schreiben wollen und das können die nun mal nicht gleichzeitig. Also sind 99 Threads am Warten und 1 Thread am Schreiben.
Sein Problem ist jetzt, dass er mit dem Thread zum...
Forum: Programmieren allgemein
by Sir Rufo,
25. Mär 2014
Nicht wirklich. Daran schrauben ist schon ok und sollte man wohl auch machen, aber als richtige Lösung ist das nicht zu sehen, da man sich hier auf eine Verhalten stützt, was man selber nicht wirklich in der Hand hat.
Und wirklich viele Prioritäts-Stufen hat man nicht (ist auch unnötig), so dass die echte Kontrolle immer selber erfolgen sollte. Die Priorität ist nur unterstützend zu sehen und...
Forum: Programmieren allgemein
by Sir Rufo,
25. Mär 2014
Das mit dem Event kann man auch umdrehen.
Wenn der Sende-Thread lesen möchte, dann wird der Event zurückgesetzt und alle Empfangs-Threads werden durch den Event aufgehalten und können erst mal nicht mehr schreiben.
Ist der Sende-Thread fertig mit lesen, dann setzt der wieder den Event und alle schreiben wieder lustig in die Liste.
Dazu muss der Event wie folgt initialisiert werden:
...
Forum: Programmieren allgemein
by Sir Rufo,
25. Mär 2014
Also generell kann man so etwas mit einem TEvent lösen
type
TFoo = class
private
FThrottle : TEvent;
FCS : TCriticalSection;
procedure ReleaseThrottle;
public
constructor Create;