From: Perry E. M. <pe...@pi...> - 2004-03-31 21:53:40
|
Christophe Rhodes <cs...@ca...> writes: >> The #ifdefs are simple and are found all over the rest of the file >> anyway. Can I use them? > > Just a thought -- might it be better to > > (a) rename get_spinlock to get_sbcl_threads_spinlock (or something > that definitely signals that it should only be used to resolve > internal contention; not to interface with any other form of lock on > the platform, and (or "or", if get_spinlock is already idiomatic for > that) Dunno. Perhaps. I think the existing names are reasonable, though I suspect that instead of rolling one's own threads, using the pthreads interface from the operating system would be far superior. Then one can simply use the various pthreads_mutex calls to do mutual exclusion, and one gets access to the OS's thread scheduler interfaces. That's a whole other story, though. Right now I just want to #ifdef thread specific code in the non-threaded case. > (b) write a non-threaded version of get_spinlock() and > release_spinlock() on the x86, such that the appropriate one will be > chosen depending on LISP_FEATURE_SB_THREAD. Then the operation of > get_spinlock() will be *word = value; or equivalent -- certainly > cheaper than lock cmpxchg. There isn't any use in the code for spinlocks outside of thread exclusion, so it isn't clear that we need a non-threaded version. -- Perry E. Metzger pe...@pi... |