Я переключил приложение Xamarin.Android, чтобы использовать async, ожидая вместо предыдущего использования ThreadPool.QueueUserWorker, и он появляется, не имея метрик, что он быстрее! Очевидно, что в этой новой версии Xamarin Android могут быть другие оптимизации, но мне любопытно с точки зрения C# (.NET 4.5), если на самом деле Task.Run будет быстрее, поскольку он запускает задачу по требованию и не ставит в очередь пул потоков?Является ли Task.Run быстрее, чем ThreadPool.QueueUserWorkerItem?
У кого-нибудь есть информация, которую async ждет может и будет быстрее, чем реализация ThreadPool.QueueUserWorkerItem?
'async' сам не использует другие потоки. Возможно ли, что вы просто видите случайное улучшение использования пула потоков? Поэтому я имею в виду меньшее количество конфликтов, меньше голодания пула и т. Д. –
Нет, Task.Run тоже использует пул потоков, если вы не планируете его на конкретном планировщике. Вы на самом деле * вызываете * Task.Run себя, хотя? Это помогло бы, если бы мы могли увидеть некоторый код ... –
Да, я обертываю свой код с помощью: Return Task.Run (() => {code here}); – Neal