2 ms·
Yes. I just meant to say that it’s not a pthread based implementation, potentially making it more portable.
by bluejekyll 7y ago
Yes. I just meant to say that it’s not a pthread based implementation, potentially making it more portable.
- asveikau 7y agoThe P in pthread is the P from Posix which stands for portable. Now, the "zero syscalls for uncontended pthread mutices via futex" optimization is Linux specific and may not be replicated elsewhere. Or it may. It's not Posix, but I know for instance win32 critical sections look a lot like spinlocks when not contended but do syscalls to block, which sounds a lot like a futex. So that would put that technique as dating to the 1990s at the latest. Futex landed in 2002.
- bluejekyll 7y ago> The P in pthread is the P from Posix which stands for portable. What’s your point here? Posix is portable across posix compliant systems, it is not portable beyond that. There are many systems that are posix, but Rust targets more than that.
- asveikau 7y agoAvoiding pthreads because they aren't portable and replacing them with a spinlock sounds a little bit like madness, that was my point. What is the non-posix target you have in mind? Windows? Seems like conditionally compiling against either pthreads or win32 critical section [or anything else] is a feasible thing and reasonable action. Maybe even the spinlock as a last resort.