sem_open/sem_close for Darwin (doesn't have sem_init/sem_destroy)
+ implementation of cSemaphore* based on pipes (for potential future
systems that don't have either sem* routines)
+ test for basicrtlevent
* fixed datarace whereby a TThread could be started, run and exit before
TThread.AfterConstructor had been called (Mantis 6693, all platforms)
* throw EThread exceptions in TThread.create if something during creating
the tthread goes wrong (*nix)
* don't crash in TThread.Destroy if the TThread throws an exception before
it was fully initialised (*nix)
* changed order of operations in TThread.Destroy so it doesn't perform
invalid thread operations in some edge cases (*nix)
* fixed usage of sem_wait/sem_trywait (can be interrupted) in Semaphore
and RTLEvent implementations
* fixed erroneous waiting for threads after they had already exited via
pthread_detach/pthread_exit
* fixed several memory leaks in case of thread intialisation errors
(*nix)
* unified tthread.inc for all Unices
git-svn-id: trunk@5662 -
* handle interrupted reads from the semaphore pipe in Darwin (should be
applied to *BSD and Linux as well)
+ lots of extra debugging code in Darwin tthread.inc if DEBUG_MT defined
git-svn-id: trunk@1416 -
suspended thread, it was possible that resume was executed before
that thread had completed its initialisation in BeginThread ->
FInitialSuspended was set to false in resume and nevertheless a
semafore was posted
* second problem fixed: set FSuspended to false before waking up the
thread, so that it doesn't get FSuspended = true right after waking
up. This should be done atomically to be completely correct though.
* distclean uses cleanall rule and removes units dir
* cross compile support fixed, it is now possible to cycle a ppcsparc
without deleting ppc386
* bintutilsperfix defaults to cpu-os-
linux as well, actually).
* base libpthread definitions are now in ptypes.inc, included in unixtype
They sometimes have an extra underscore in front of their name, in
case they were also exported by the packages/base/pthreads unit, so
they can keep their original name there
* cthreadds unit now imports systuils, because it uses exceptions (it
already did so before as well)
* fixed many linux definitions of libpthread functions in pthrlinux.inc
(integer -> cint etc)
+ added culonglong type to ctype.inc