Clear questions and runnable code get the best and fastest answer |
|
PerlMonks |
Re^5: OT: Locking and syncing mechanisms available on *nix.by Illuminatus (Curate) |
on Mar 28, 2011 at 16:06 UTC ( [id://895950]=note: print w/replies, xml ) | Need Help?? |
One last note and I'm done. I'm not sure which half of the internet you are looking at regarding mutex's, but there is a lot of stuff that comes up on searches that is fairly old. The Linux thread implementation was completely rewritten for 2.6 (about 6 years ago). I did not have a chance to look at the conditional var code, but I looked at the mutex code for more recent libc releases (2.12), and pthread_mutex_lock runs completely in user-space unless contention occurs. Only then does it go to the kernel to block the thread. You can also use pthread_mutex_trylock to see if contention would occur, and this also runs completely in user-space. This is mentioned in the NPTL white paper on p8-9. The futex API is exposed for these implementations, but filled with caveats about 'you better know what you are doing'. This approach would limit your compatibility to Linux. Lastly, I found this list of links to implementations of the kind of algorithms you are looking for. I took a look at the atomic_io in qprof, and it looks fairly complete, if primitive. It is likely that all of these will give you portability issues if you really need *nix flexibilityfnord
In Section
Seekers of Perl Wisdom
|
|