RTS's (old?) invariant regarding OS blocking

Dan Aloni dan at kernelim.com
Wed Mar 2 14:38:56 UTC 2016


While trying to gain insights into the RTS, I've noticed the following in
the Wiki page [1] on the topic of the scheduler:

    Invariant: a task that holds a capability is not blocked in the operating system.

    This makes some parts of the system simpler - for example, we can use spin locks that spin indefinitely, because we can ensure that the spin lock is only held by a currently executing CPU, and will therefore be released in a finite (and short) amount of time.

Does it still apply to modern day GHC, or was it addressed by [2]?

[1] https://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Scheduler#Capabilities
[2] https://ghc.haskell.org/trac/ghc/ticket/3553

Dan Aloni

More information about the ghc-devs mailing list