Стивен Тууб в блоге, который
Оба SynchronizationContext и TaskScheduler - это абстракции, которые представляют собой "планировщик", то, на что вы даете некоторую работу, и это определяет, когда и где выполнять эту работу. Есть много разных формы планировщиков. Например, ThreadPool является планировщиком: вы вызовите ThreadPool.QueueUserWorkItem для предоставления делегата для запуска, который делегат попадает в очередь, а один из потоков ThreadPools в конечном итоге собирает и запускает этот делегат. В вашем пользовательском интерфейсе также есть планировщик: насос сообщений.
Итак System.Reactive.Concurrency.EventLoopScheduler
, Dispatcher, ThreadPool, TaskScheduler, SyncrhonizationContext и Реализации Rejective Extensions - это все "планировщики" в этом смысле,
В чем разница между ними?
Почему все это было необходимо? Я думаю, что получаю EventLoop, Dispatcher, ThreadPool. IScheduler также хорошо объяснены.
Но TaskScheduler и SyncrhonizationContext все еще не понятны мне.
Отличная статья Стивена Клири объясняет SyncrhonizationContext, и я думаю, что поняла. Почему тогда нам нужен TaskScheduler, неясно.
Пожалуйста, объясните или укажите источник.