Delphi里面的TCriticalSection对象是将包含它的对象给锁住。
比如:
TAsioDataBuffer = class
procedure Setstate(const Value: Integer); //数据锁
public
FDataLock, FSendLock: TCriticalSection;
Writedata, SendData, Data1, data2: TMemoryStream;
end;
var
MyAsioDataBuffer: TAsioDataBuffer;
begin
//这一句是将MyAsioDataBuffer对象锁住,而不是将Writedata锁住,只不过因为MyAsioDataBuffer对象包含了Writedata对象,所以Writedata也被锁住了,就是MyAsioDataBuffer里的所有东西都被锁住了。
MyAsioDataBuffer.FSendLock.Acquire;
end;