pthread.inc 609 B

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