On 10/06/2014 05:55 PM, Dennis Poon wrote:
function TThreadList.LockList: TList;
begin
Result:=FList;
System.EnterCriticalSection(FLock);
end;
Yep.
System.EnterCriticalSection is a procedure variable that is set
according to the OS and arch the project is compiled for.
In Linux without UseCThreads it is just an empty function. (OK here
creating threads is not allowed)
In Linux with UseCThreads it is just an empty function it is a call to
pthread_mutex_lock, which is in the pthreadlib so file and calls FUTEX
or MUTEX, such as appropriate. (So don't try to "optimize" !!! )
In Windows I suppose it does a call to the Windows system DLL that
supposedly does a FUTEX workalike. (So don't try to "optimize" !!! )
There is no special optimization at all. It simply calls
System.EnterCriticalSection(FLock),
so performance should be JUST THE SAME as wrapping a pair of critical
section enter/leave around the code ourselves.
Yep. (So don't try to "optimize" !!! )
-Michael
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal