blob: 2e341061f6767621c4eddc713a51f1cecb26c4b1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
Function InitializeCriticalSection(var lpCriticalSection: TRTLCriticalSection): Integer;
var
Attr : pthread_mutexattr_t;
begin
Result:=pthread_mutexattr_init(Attr);
if Result=0 then
Try
Result:=pthread_mutexattr_settype(Attr,PTHREAD_MUTEX_RECURSIVE);
if Result=0 then
Result:=pthread_mutex_init(lpCriticalSection, Attr);
Finally
pthread_mutexattr_destroy(Attr);
end;
end;
function TryEnterCriticalSection(var lpCriticalSection: TRTLCriticalSection): Boolean;
begin
Result:=EBUSY<>pthread_mutex_trylock(lpCriticalSection);
end;
|