I like to think of it as preemptive because (putting NIFs aside) it&#x27;s not possible for a single process to completely block the entire scheduler, even if it ends up in an infinite CPU bound loop.<p>So in other words, a task (i.e. process) doesn&#x27;t have to cooperate with others. It can do whatever it wants, be it I&#x2F;O or CPU bound, and doesn&#x27;t have to yield explicitly. Due to aggressive &quot;preemption&quot; it won&#x27;t block other pending tasks significantly.<p>In contrast, if this is not guaranteed (which is not in most other Erlang &quot;alternatives&quot; I&#x27;ve looked at), then a task might accidentally paralyse large portion of the system.