Forum: Programmieren allgemein
Delphi
by Sir Rufo,
4. Jul 2014
Nein, definitiv nicht!
PS
Wenn du so eine Angst davor hast, dann leg die Erzeugung des Events einfach vor das inherited Create( False );. :)
constructor TMyThread.Create;
begin
E_Event := TEvent.Create(NIL,false,false,'');
FRunning := false;
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
4. Jul 2014
@Frank
Den Thread im Suspended-Mode zu starten macht irgendwie keinen Sinn, da der doch schon durch den Event wartet.
Ich würde auch nicht TThread.Terminate überschreiben, sondern Tthread.TerminatedSet, denn das ist schon als virtual deklariert und somit zum Überschreiben gedacht.
Die Klasse selber würde ich noch als abstract deklarieren (nur wegen der Dokumentation), denn ohne Ableitung...
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
3. Jul 2014
Die Situation bleibt aber doch gleich, oder weißt du auf welchem Core und welchem Riegel der Wert nun zu finden ist? Und wenn ich der Speicherstelle x einen Wert übergebe, dann muss jeder Thread von dieser Speicherstelle genau den geschriebenen Wert auslesen können.
Das war ja auch nur wegen MultiCore und alle teilen sich einen Arbeitsspeicher :)
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
3. Jul 2014
Hier auf Seite 22 (bzw. Seite 10)
The memory slots associated with a given processor are unavailable if the corresponding processor socket is not populated.
A processor may be installed without populating the associated memory slots provided a second processor is installed with associated memory. In this case, the memory is shared by the processors. However, the platform suffers...
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
3. Jul 2014
Da haben wir aber aneinander vorbeigeredet. Das ist ja auch logisch, denn ein Thread-Cycle ist nicht zwangsläufig gleich einem CPU-Cycle. Und wenn ich einen Wert aus dem Speicher lese, dann habe ich den Wert, den er zu diesem Zeitpunkt hatte, einen CPU-Zyklus später, kann das eben völlig anders sein. Dafür gibt es ja auch extra InterlockedIncrement.
Es ist aber völlig unproblematisch auf...
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
2. Jul 2014
Nun ich kann mir nicht vorstellen, 2-n echte Prozessoren es schaffen sollten ein und die selbe Speicheradresse im selben/gleichen Moment zu beschreiben. Kann eigentlich nicht möglich sein, denn dann müssten sich beide zur exakt selben Zeit auf dem Bus zum Speicher befinden ... wie soll das sinnvoll gehen?
Bei den aktuellen XEON-MultiCore-Boards hat übrigens jede CPU ihren eigenen Speicher.
...
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
2. Jul 2014
@stoxx
Wenn ein Integer nach deiner Darstellung nicht sicher ist, dann kann auch ein Boolean unsicher sein (hängt davon ab wie ein Boolean intern gespeichert/verarbeitet wird).
Bei 32bit werden allerdings - soweit mir bekannt - immer genau 4 Bytes (=32bit) bearbeitet, und deswegen ist ein 8/16/24/32bit-Wert auf einem 32bit-Betriebssystem threadsafe, denn die CPU lockt dafür den...