4 ms·
Only Linux did the `clone(2)` thing. The others went for threads with a distinct ID namespace where all the threads were in the same process. Only Linux tried
by cryptonector 1y ago
Only Linux did the `clone(2)` thing. The others went for threads with a distinct ID namespace where all the threads were in the same process. Only Linux tried a different approach, and that approach was terrible for a while, and eventually Linux got much closer to the rest.
- somat 1y agoFair enough, probably my fault for having linux and openbsd as my two reference systems and assuming most other unixen went the same way. Now That I am second guessing myself I am not even sure about openbsd, My assumption is mainly based on the manual for pthread "This 1-to-1 implementation of the pthreads API initially appeared in OpenBSD 3.9 under the name “librthread” as an alternative to the pure-userspace (N-to-1) implementation. In OpenBSD 5.2 it became the default implementation and was renamed to libpthread." and some half remembered discussion on the lists about adding shared memory flags to the kernel process structure.
- cryptonector 1y agoAll the BSDs and Solaris etc. went through a process of having OS threads and N-to-M threading in user-land only to eventually end up with 1-to-1 threading in user-land. N-to-M means that you could have N (with N>M) threads in user-land and a smaller number of OS threads to run them, and then the C library had to manage part of the scheduling by switching contexts between the N user-land threads as they blocked on I/O and as I/Os completed, and also maybe in other cases. N-to-M threading came to be considered harmful, at least in C, but then nowadays green threads are super popular in Java and other languages, and green threads are just more N-to-M threading.