Coroutine vs Fiber: разъяснение различий

В книге Linux System Programming, 2nd Edition разница между сопрограммами и волокном объясняется следующим образом:

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

У меня есть несколько примеров Coroutines (языковых конструкций), но я не могу найти пример Fibers.

Может ли кто-нибудь предоставить мне пример Fiber (системной конструкции)?


person kasyauqi    schedule 23.03.2017    source источник


Ответы (1)


Вы можете взглянуть на boost.coroutine2 и boost.fiber ( Библиотеки C ++) - обе используют один и тот же механизм переключения контекста (callcc () / continue) из boost.context.

Короче говоря, разница между сопрограммами и волокнами заключается в том, что переключение контекста между волокнами управляется планировщиком (выбирает следующее волокно ...). У сопрограмм нет концепции планировщика.

Более подробное объяснение разницы между сопрограммами и фибрами можно прочитать в N4024: Определение сопрограмм и волокон.

person xlrg    schedule 15.06.2017
comment
N4024 - прекрасное объяснение! Спасибо, что поделились этим невероятным ресурсом. - person Dan Bechard; 20.01.2021