2 ms·
It is designed for a simpler age and has not caught up. Lots of overhead for multitasking and multithreading (esp. creation), bad handling of NUMA, no actual ha
by AstralStorm 7y ago
It is designed for a simpler age and has not caught up. Lots of overhead for multitasking and multithreading (esp. creation), bad handling of NUMA, no actual handling of asymmetric processors (big LITTLE, per unit clock scaling). No way to enforce CPU limits per task. Expensive locking primitives with no handling of priority inversion.
And more...
- mehrdadn 7y ago> no handling of priority inversion Uh... huh? "The scheduler solves this problem by randomly boosting the priority of the ready threads (in this case, the low priority lock-holders). The low priority threads run long enough to exit the critical section, and the high-priority thread can enter the critical section. If the low-priority thread does not get enough CPU time to exit the critical section the first time, it will get another chance during the next round of scheduling." https://docs.microsoft.com/en-us/windows/win32/procthread/priority-inversion https://docs.microsoft.com/en-us/windows/win32/procthread/pr... > Expensive locking primitives Elaborate/citation? > It is designed for a simpler age and has not caught up. A little ironic to read something like this when, say, unlike in Linux, their I/O system was designed to be asynchronous from the ground-up. Or when so much of Windows is so insanely extensible at so many points that I can't even begin to list them all (just consider how they literally implemented a Linux subsystem on top). Or when Linux literally just discovered the concept of waiting for a process to exit a few months ago.