Ответ 1
Я спрашивал их, почему они использовали Fibers, и главный разработчик сказал что ему легче отлаживать. Значит, он знает, какой поток конкретная функция пришла и даже могла получить доступ к переменным выше в стеке.
Это звучит совершенно странно. При использовании параллельной библиотеки задач с настраиваемыми планировщиками, отличными от стандартного ThreadPoolTaskScheduler
, вы сами можете решить, как ваши задачи планируются (и это не обязательно в новых потоках). async-await
, с другой стороны, предоставляет вам удобный способ асинхронного ввода-вывода. VS дает вам возможность отлаживать асинхронный код, как если бы он выполнялся синхронно.
Чтобы использовать волокна, нужно было бы вызвать неуправляемые API, так как .NET не предлагает никаких управляемых оберток в BCL. Даже в документах волокон четко сказано, что нет четкого преимущества для их использования:
В общем, волокна не обеспечивают преимуществ перед хорошо спроектированными многопоточное приложение.. Однако использование волокон может облегчить портовых приложений, предназначенных для планирования собственных потоков.
Мне было интересно, какие преимущества и недостатки использования Волокно против использования нового асинхронного ожидания и использования потоков.
Использование async-await
дает вам преимущество выполнения IO связанной асинхронной работы, чувствуя, что вы выполняете синхронно. Параллельная библиотека задач обеспечивает простой способ планирования работы над выделенными потоками, будь то потоки потоков или новые потоки, позволяя вам подключиться к механизму, который планирует эти единицы работы. Я действительно не вижу преимуществ в использовании волокон сегодня, и все рамки могут предложить.
Я думаю, вы должны сказать своему основному разработчику, чтобы сделать некоторое чтение многопоточной и асинхронной работы ввода-вывода, используя параллельную библиотеку задач и async-await
, соответственно. Я думаю, что это облегчило бы жизнь для всех вас.