среда, 24 июня 2015 г.

Fibers

Fibers - это вид потоков, которые работают в юзерспейсе виртуальной памяти, разделяя одну и туже память между собой, но они не работают паралельно.
Их основное отличие от зеленых потоков в том, что они сами "уступают" процессорный ресурс другим "страждущим" потокам.
При этом они работают в одном системном треде, по этому здесь нет реальной параллельности(да и предаставлены они в языках программирования как последовательные структуры в более читабельном виде).
Но они очень легковесные и переключение между ними быстрее чем у зеленых потоков. Это представители кооперативной многопоточности.

Файберы реализуют ту самую концепцию, что и корутины. Единственное, что можно назвать отличием между ними - это то, что корутины конструкция уровня языка, а файберы - системы.

Плюс такого подхода, что мы уходим от проблем синхронизации.
Минус - что мы не пользуемся на полную мощь ресурсом параллельной системы.
Но подход маппинга платформенной многопоточности на системную N:M с использование файберов пока зывает себя очень хорошо в сравнении с чистый упред

Комментариев нет:

Отправить комментарий