Волокна используют случаи - PullRequest
0 голосов
/ 30 апреля 2018

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

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

Каковы случаи практического использования волокон?

Например, каждый документ фактически использует асинхронный ввод-вывод в качестве примера, но что, если у меня нет проблем, связанных с вводом-выводом? Например, что если моя проблема в подсчете слов в огромном файле ? Здесь я бы просто разделил файл по потокам, могут ли волокна как-то помочь? Я полагаю, что связанные с ЦП вычисления, такие как числовые задачи (например, матричные / векторные операции), не подходят для волокон, но, опять же, я могу быть совершенно неправ.

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Волокна должны иметь меньшие накладные расходы при создании и переключении контекста, чем потоки ОС. Таким образом, теоретически, если у вас есть решение, где у вас много блокировок на блокировках, вы можете увидеть улучшение производительности от волокон, потому что потоки ОС, на которых работают волокна, будут использовать больше выделенного времени выполнения. Это происходит потому, что, когда волокно блокирует мьютекс / блокировку волокна, основной поток ОС вызовет планировщик волокна, который будет запускать другое волокно, и все это без переключения контекста потока ОС. Это основная идея потоковых моделей M: N.

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

Одним из практических приложений является моделирование на основе большого агента с использованием модели актера. С волокнами каждый агент / субъект может работать на своем собственном волокне.

0 голосов
/ 30 апреля 2018

что, если моя проблема - считать слова в огромном файле? ... могут ли волокна как-то помочь?

номер

каждый документ на самом деле использует асинхронный ввод / вывод в качестве примера

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

В зависимости от того, как они были реализованы, потоки в те времена могли быть где угодно в масштабе от «в основном того же самого» до «полностью идентичного» с тем, что мы сегодня называем «зелеными нитями» или «волокнами».

Когда на рынок выходили многопроцессорные системы, многопоточность считалась естественным и очевидным способом использования возможностей параллельной обработки.

...