You might want to preempt after scheduling quanta expirations, page faults, etc. And there is still the issue of existing code that use the standard blocking system APIs.
Also a synchronous API can be more efficient if it is not going to block and only the kernel can know.
In practice you are right, so far SA hasn't been worth the complexity.
Also a synchronous API can be more efficient if it is not going to block and only the kernel can know.
In practice you are right, so far SA hasn't been worth the complexity.