An earlier conversation about threading here, which generated a bit of discussion, has a comment from a Sun employee who authored one of the cited papers. It seems strange to turn a comment into news, but it’s a nice resolution.
The thing I’m wondering, is why we (BSD and Linux folks) haven’t/can’t put our threading stuff into our libc’s. Am I missing some difficulty here?
Historically there was an overhead resulting from the inclusion of threading functionality into libc. Another reason is that there in theory multiple threading interface you might want, not POSIX threads.
But since the size argument is really weak these days, even for static applications, and there are almost no alternative APIs to POSIX threads left, the reasons to split libc and libpthread/libc_r vanished.
In fact we (DF) plan to reintegrate libc_r into libc to simplify a lot of stuff, like the weak definition of many functions like open(2) which are cancellation points and need special handling in the threaded case.
DragonFly BSD Digest