I thought it was strange that in the '“Problems” with Threads' section they didn't even mention testability - which is the number 1 problem we have in trying to create high-reliability systems with threads.
I work in embedded systems which run unattended for months at a time so they have to be reliable. The interactions between threads can create all sorts of unexpected race conditions which are very hard to predict. And if you can't assure repeatable behavior you can't properly test a system. On the basis of testability alone we avoid threads.
This paper uses cooperatively scheduled threads (i.e. no preemption or concurrent execution of threads), which means you don't have to deal with synchronization.
I work in embedded systems which run unattended for months at a time so they have to be reliable. The interactions between threads can create all sorts of unexpected race conditions which are very hard to predict. And if you can't assure repeatable behavior you can't properly test a system. On the basis of testability alone we avoid threads.