Многие-к-одному отображают множество потоков пользовательского уровня в один поток ядра.Один-к-одному сопоставляет один поток пользовательского уровня с одним потоком ядра.Многие-ко-многим сопоставляют многие потоки пользовательского уровня со многими потоками ядра.
Многие-к-одному управляются библиотекой потоков в пользовательском пространстве и поэтому эффективны;но весь процесс будет блокироваться, если поток выполняет системный вызов блокировки.Кроме того, поскольку только один поток может одновременно обращаться к ядру, несколько потоков не могут работать параллельно на многопроцессорных системах.
Один-к-одному обеспечивает больше параллелизма, чем модель многие-к-одному, позволяя другому потокузапускаться при системном вызове блокировки;это также позволяет нескольким потокам работать на многопроцессорных системах.Единственным недостатком этой модели является то, что создание пользовательских потоков требует создания соответствующих потоков ядра, поскольку создание многих потоков ядра может перегружать систему, большинство реализаций ограничивают число потоков ядра, которые могут быть созданы.
Многие ко многимэто самая редкая из реализаций, и она объединяет множество потоков пользовательского уровня во множество потоков ядра.Теоретически он должен обеспечивать лучший параллелизм, но истинный параллелизм не достигается, потому что ядро может планировать только один поток за один раз.Разработчики могут создавать столько пользовательских потоков, сколько необходимо, и соответствующие потоки ядра могут работать параллельно на процессоре.Кроме того, при выполнении блокирующего вызова ядро может запланировать выполнение другого потока.