[fpc-pascal]two questions plz help
Jonas Maebe
jonas at zeus.rug.ac.be
Wed Jan 16 12:36:40 CET 2002
On maandag, januari 14, 2002, at 07:14 , Stefan Ziegenbalg wrote:
> var lock_mem : boolean;
>
> procedure getmem2(var pt:pointer; size:longint);
> bein
> while lock_mem do
> delay(1);
> lock_mem:=true;
> getmem(pt,size);
> lock_mem:=false;
> end;
> ;
This isn't MT-safe at all. If two threads are in the "while lock_mem do
delay(1);" loop, it's possible that when something else sets it to
false, they both check it before the other one has set it to true. You
need to do the testing and setting as an atomic operation.
Jonas
More information about the fpc-pascal
mailing list