Опыт, полученный при программировании в Erlang, не совсем прямо ложится на кооперативную многозадачность. Там у легковесных процессов есть понятие редукций (редукция - это единица минимального вычисления), и там переключением процессов занимается планировщик задач, то есть программист не несет ответсвенность за это.
С кооперативной же многозадачностью программист берет на себя ответственность за переключения между нитями