Date: Thu, 4 Feb 2016 14:24:03 -0500 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: setcontext/getcontext/makecontext missing? On Thu, Feb 04, 2016 at 05:22:47PM +0100, u-uy74@...ey.se wrote: > On Thu, Feb 04, 2016 at 10:41:38AM -0500, Rich Felker wrote: > > There's been some interest in adding them and they were on a long-term > > goal list, but I'm not sure it makes sense anymore. All the major > > users of this API have been moving _off_ of it, because it's > > deprecated and impossible to use correctly - see the rationale here: > > > > http://pubs.opengroup.org/onlinepubs/009695399/functions/makecontext.html > > Just for the record, nevertheless it is a pity to lose them. > > In my experience the ucontext-based implementation of user-space threads > suits/works best for Coda file system, even though Coda can use an > alternative pthread-based implementation of the needed threading layer. > > Pthreads feels like an overkill, hardly efficient when all one needs > is cooperative threading designed from the beginning to fit in one > process. In theory, userspace context switching could possibly be slightly faster than threads. However the ucontext API saves/restores the signal mask as part of context switching, which inherently requires a syscall. (There are possibly ways we could cache the most-recently-set signal mask in TLS and avoid redundant setting, but no existing libcs do this, and it sounds mildly difficult/error-prone.) Thus the comparison is not between pure-userspace switching and having the kernel involved, but between a SYS_rt_sigprocmask syscall and a voluntary context switch between threads in the same process. The latter is extremely light and comparable to some of the cheapest syscalls, so I suspect the performance difference between ucontext and threads is negligible. Given that there are a lot of other good reasons you should be using threads instead of ucontext, I think the matter is pretty clear. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.