Я читал о неупреждающих потоках и нашел слайд из Принстонского университета, на котором показана следующая диаграмма: (Ссылка на источник: http://www.cs.princeton.edu/courses/archive/fall11/cos318)./lectures/L5_ThreadsImplementation.pdf)
Насколько я понял, исполняемый поток сначала помещается в очередь готовности. Когда он выходит из очереди, он находится в рабочем состоянии. Если он хочет вызвать другой поток, он вызывает функцию yield, которая сохранит текущее состояние потока и вставит его в конец очереди. И поток, стоящий впереди очереди, будет выполнен.
Что произойдет, если поток заблокирован (т. е. ожидает какого-либо ресурса)? Я думал, что в невытесняющем потоке он будет ждать ресурса, а затем продолжит выполнение.
Но из приведенной ниже диаграммы видно, что он переходит в заблокированное состояние, а затем ставится в очередь готовности? Это почему?