Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#19

Re: Synchronisierung von Subthreads (VCL) + Pointerzugriff

  Alt 24. Apr 2006, 18:14
Im Grunde sind es jeweils 2 Befehle.

Dieses kopiert den Wert/Inhalt von x2 nach x1
Code:
MOV x1, x2
Hier also den Wert $FF in den Speicherbereich der Variable B.
Code:
MOV &B, $FF
Wobei das obere nur die Kurzfassung ist, ausfühlich würde es so aussehn, wobei B eigentlich ein Pointer (hier ist es ein BYTEPoinTeR) zu einem bestimmten Speicherbereich ist:
Code:
MOV BYTE PTR &B, $FF
MOV BYTE PTR [Pointer], $FF
Das LOCK ist ein Befehl, welcher die CPU für den nachfolgenden Befehl in einen Singlethreadmodus schaltet, es wird also sozusagen nur der nachfolgende Befehlausgeführt, während die anderen threads warten ... somit kann also kein anderer Thread wärend dieser Zeit Befehl ausführen, welcher zu dieser Zeit eventuell auch auf deisen Speicherbereich zugreifen könnte (es läuft ja schließlich Keiner)

alsoLOCK MOV BYTE PTR &B, $FF oderLOCK MOV &B, $FF setzt alle Bits (ist beim ByteBounter halt besser) auf 1 und somit auf TRUE, ohne daß zur selben Zeit ein anderer Thread auf B zugreifen kann.
Darum kann man auch ganz normal lesend auf B zugreifen, ohne das es Probleme gibt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat