From: Vladimir T. <vtz...@gm...> - 2014-05-01 17:48:59
|
> 1. Is test-and-set faster than compare-and-swap? testandset in xthread.d is special case of cas with 0/1 values. > 2. In [xthread.d, line 104 ] its mentioned "raw mutex used for thread > suspension/resume". What does a raw mutex refer to here? Is it any > different from a normal mutex? Does by raw mutex you mean .. simply > a mutex (! mutex/condition variable pair) ? In all comments "raw" mutex means operating system mutex while "mutex" means lisp object mutex (see lispbibl.d:6831). "raw" mutex is used for lisp mutex implementation. > 3. I came across futex. It's a kernel facility the enables fast > implementations > of mutex in userspace and is used to implement basic locking. Why don't we > incorporate it in achieving locking ? since Pthread Mutex in the latest > Linux > distributions are implemented through Futex logic. futex is linux only thing. clisp runs on bsd, win32, etc. Also futex cannot be used with condition variables. > 4. In [xthread.d, line 52 ] I could not understand the 'Create a new > thread' > method's void* (*startroutine)(void*) argument. Please, also provide me > with a definition of startroutine. See zthread.d:228 This is start routine for all threads created from lisp code. > 5. In [xthread.d, line 99,152] what does #define THREADPROC_SIGNATURE do? This is just a syntax sugar to hide win32/posix thread function return type. > 6. In [xthread.d, line 156], its mentioned 'an inefficient implementation > of > condition variable for win32.'. Why don't we use windows 'Events' instead of > a condition variable, since I read they are like a mutex/condition pair > wrapped > around a boolean. > plus there's also a to-do marked there- "TODO : make it better." Condition variable emulation on win32 is not exactly inefficient but is not fair for sure. Win32 event is very different compared to posix condition variables - please go over related docs again. Recent win32 versions (not sure from when exactly) have real condition variables (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682052(v=vs.85).aspx). The reason we do not use them is that we want to support windows xp as well. Of course some ifdefs are possible but nobody bothered yet. |