2014-08-28 4 views
5

Какая модель потоковой обработки библиотек потоковой передачи C++?
1:1 (Kernel-level threading)
N:1 (User-level threading)
M:N (Hybrid threading)Какова модель библиотеки с потоковыми потоками

Разница между этими моделями (из вики): http://en.wikipedia.org/wiki/Thread_(computing)#Models

Я проверил сайт наддува и он не упомянул о потоковой модели он использует.
Я предполагаю, что это 1: 1, так как он не обеспечивает функцию как yield или reschedule, но я не уверен ...

+0

Пользовательская нить реализована в boost coroutine? также может зависеть от платформы. –

+0

+1. Кажется, это хороший вопрос ... но я не уверен, понял ли я это, поэтому мог бы рассказать о различиях между моделями, упомянутыми в вашем вопросе? Или дайте нам ссылку, которая объясняет их. – Nawaz

+0

@Nawaz http://en.wikipedia.org/wiki/Thread_(computing)#Models – pgplus1628

ответ

1

Это родные темы, а именно, он будет использовать платформу потоков, по крайней мере, в Linux, Windows и Mac.

Насколько я знаю, сопоставление потоков будет 1: 1 с потоком ядра в Windows, Linux и MAC для каждого порожденного потока.

Я не уверен, что для других платформ он может быть реализован другими способами, но я не знаю ни одной реализации неядерного потока с помощью API boost.thread.

Для пользовательских «потоков», с совместной многозадачностью, можно использовать boost.coroutine. Существует также новая библиотека boost.fiber, которая почти похожа на boost.coroutine, но добавляет API-интерфейс уровня пользователя (который является фибоналогом) API и графический планировщик уровня пользователя.

  • Вы можете найти boost.fiber here.
  • Вы можете найти boost.coroutine here.
+1

thx для ссылок, отличная помощь. есть ли какие-либо ссылки или коды, объявляющие boost.thread использовать потоки платформы? – pgplus1628

+0

Взгляните на документацию по адресу http://www.boost.org/doc/libs/1_56_0/doc/html/thread.html, вы можете увидеть все макросы конфигурации там. –