Preliminary work towards threads on win32
* Implement SB-THREAD
* Support WITH-TIMEOUT, etc.
Implementation details:
* Implement pthreads, futex API on top of Win32.
* Adds support for the timer facility using sb-wtimer.
* Implement an interruptable `nanosleep' using waitable timers.
* Threading on Windows uses safepoints to stop the world.
On this platform, either all or none of :SB-THREAD, :SB-SAFEPOINT,
:SB-THRUPT, and :SB-WTIMER need to be enabled together.
* On this platform, INTERRUPT-THREAD will not run interruptions
in a target thread that is executing foreign code, even though
the POSIX version of sb-thrupt still allows this (potentially
unsafe) form of signalling by default.
Does not yet include interruptible I/O, which will be made available
separately. Slime users are requested to build SBCL without threads
until then.
Note that these changes alone are not yet sufficient to make SBCL on
Windows an ideal backend. Users looking for a particularly stable
or thread-enabled version of SBCL for Windows are still advised to
use the well-known Windows branch instead.
This is a merge of features developed earlier by Dmitry Kalyanov and
Anton Kovalenko.
32 files changed: