I wonder if it's worth to make these pure too.
There is some weird mutex code in `_d_monitor_create` that would need to be replace with a `cas` based initialization ( `_d_monitor_destroy` should be made thread safe too I guess). We'd also have to mark `InitializeCriticalSection`, `DeleteCriticalSection`, `pthread_mutex_init` and `pthread_mutex_destroy` as pure. I'm not sure whether this is a good idea, conceptionally these should just be alloc/free functions.