System.SysUtils.TMultiReadExclusiveWriteSynchronizer.BeginWrite
Delphi
function BeginWrite: Boolean;
C++
bool __fastcall BeginWrite();
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
function | public | System.SysUtils.pas System.SysUtils.hpp |
System.SysUtils | TMultiReadExclusiveWriteSynchronizer |
Description
Permet à un thread d'écrire dans la mémoire protégée quand il peut le faire sans risque.
BeginWrite obtient un verrou d'écriture exclusif sur la mémoire protégée par l'objet synchroniseur. Appelez BeginWrite avant d'écrire dans cette mémoire. BeginWrite ne se termine pas tant que d'autres threads lisent ou écrivent. Après l'appel de BeginWrite par un thread, tout autre thread qui demande à accéder à la mémoire en appelant BeginRead ou BeginWrite doit attendre que le thread en train d'écrire appelle EndWrite.
Remarquez qu'une opération de verrou d'écriture n'est pas atomique. Les données en mémoire protégée seront toujours dans un état cohérent au retour de BeginWrite, mais pas nécessairement dans le même état que lors de l'appel à BeginWrite. En règle générale, un thread doit toujours supprimer les échantillons précédents de la mémoire protégée après avoir transformé un verrou de lecture en verrou d'écriture. Le thread appelant peut toutefois déterminer si une modification d'état s'est produite en examinant la valeur de retour de BeginWrite : il s'agit de true si la mémoire protégée n'a pas été écrite par un autre thread, de false si un autre thread peut avoir modifié la mémoire protégée.