Волокна над нитями в D - PullRequest
       8

Волокна над нитями в D

9 голосов
/ 20 сентября 2011

Я экспериментирую с потоками и Fibers в D, и мне было интересно, возможно ли запустить Fiber на другом процессоре во время работы основного потока. И если это не так, то что может быть причиной использования волокон над потоками. (Практические примеры очень приветствуются)

Я пытался написать какую-то начальную программу с Fibers, где через некоторое время я переключаюсь на следующее волокно. Как бы то ни было, я заметил, что использование процессора остается только на одном процессоре.

Документация D гласит:

Пожалуйста, обратите внимание, что не существует требования, чтобы волокно было привязано к одному конкретная тема. Скорее, волокна могут свободно проходить между нитями до тех пор, пока они не выполняются.

Означает ли это, что я должен предоставить поток, по которому будет работать волокно, если я хочу использовать другой процессор? Если это так, то я не вижу цели.

Заранее спасибо!

Ответы [ 2 ]

8 голосов
/ 20 сентября 2011

Волокна - это легкий механизм для совместной многозадачности, который работает в том же потоке, что и их создатель / вызывающая сторона. Если вам нужно запустить задачу на другом процессоре, используйте потоки. Назначение волокон - обеспечить быстрое кооперативное переключение контекста и механизмы для реализации таких шаблонов, как сопрограммы.

6 голосов
/ 20 сентября 2011

Эта статья очень хорошо сравнивает их. Получение большего количества клетчатки в вашем рационе .

...