TaskFactory. StartNew по сравнению с ThreadPool. QueueUserWorkItem

Нет, это невозможно. Вам нужен цикл событий. Посмотрите, что произойдет, если вы просто назовете foo():

>>> f = foo()
>>> print(f)

Итак, вы получаете объект coroutine, ничего не запускается прямо сейчас! Только передавая его в цикл событий, он выполняется. Вы можете использовать asyncio или другой цикл событий, например Curio .

25
задан Dan Tao 15 June 2010 в 16:50
поделиться

3 ответа

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

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

Что касается использования большего количества памяти. Каждый поток резервирует минимум 1 МБ памяти, крошечный объем, используемый для хранения объекта задачи, несущественен. Я действительно думаю, что это последнее из твоих беспокойств.

7
ответ дан Roman Starkov 28 November 2019 в 21:58
поделиться

TaskFactory.StartNew больше подходит для сценария с высокой производительностью.

Вы получаете выигрыш в производительности благодаря набору классов в System.Threading.Tasks и заботе об их дизайне + интеграции с параллельными циклами и опциями.

Вы также получите выигрыш в производительности, потому что System.Threading.Tasks созданы поверх кражи работы в пуле потоков, что лучше для локальности (когда это важно).

-Rick

6
ответ дан Rick 28 November 2019 в 21:58
поделиться

С точки зрения вещей классы Task были разработаны для работы с новыми параллельными функциями в .Net 4. Также похоже, что вы можете использовать Action или Action<T> непосредственно при запуске / создании задачи. Это все 100% гипотеза, основанная на том, чтобы ковыряться в документах :).

2
ответ дан ckramer 28 November 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: