From: Vladimir T. <vtz...@gm...> - 2014-05-04 06:48:11
|
Let's have kind of plan. Here is what i have in mind. * Study common lisp hashtables ( http://www.lispworks.com/documentation/HyperSpec/Body/18_.htm) and clisp implementation in hashtabl.d (there are few extensions to the above standard, e.g. weak relations). * Study and understand lock free hash table ( http://www.azulsystems.com/events/javaone_2007/2007_LockFreeHash.pdf). Check clozure implementation. IIRC, you will need cas & mutex for this. * Implement cas and use it instead of testandset. Required mutex implementations are available. * Start coding and replacing hashtabl.d implementation Meanwhile you will get common with clisp (some) internals. As for you questions: 1. Always use mercurial checkout when consulting code. The link above is to old cvs repo that was not updated for quite some time. 2. win32 condition variables - it will be nice to use native ones but this is not the goal of the project. I would not put too much efforts on this at that stage. 3. There is no need to have 'full grasp' of mutex internals in order to use it. package.d is a place to consult for the usage. Vlad |