Контекст синхронизации и контекст потока - это 2 очень разные вещи.Контекст синхронизации - это метод, который может поместить единицу работы в контекст (в основном, в другой поток). Здесь - это цитата.
Одним из аспектов SynchronizationContext является то, что он предоставляет способ поставить единицу работы в контекст.Обратите внимание, что эта единица работы ставится в очередь, а не в конкретный поток.Это различие важно, потому что многие реализации SynchronizationContext не основаны на одном конкретном потоке.
Типичным примером, где полезен контекст синхронизации, являются приложения с графическим интерфейсом, такие как WinForms или WPF.В WinForms и WPF только один поток пользовательского интерфейса может обновлять элементы пользовательского интерфейса (текстовые поля, флажки и т. Д.).Если вы попытаетесь изменить содержимое текстового поля из другого потока, не относящегося к пользовательскому интерфейсу, это изменение не произойдет, или может возникнуть исключение (в зависимости от инфраструктуры пользовательского интерфейса).Таким образом, в таком приложении рабочие потоки не-пользовательского интерфейса должны планировать все изменения элементов пользовательского интерфейса в потоке пользовательского интерфейса.И это то, что обеспечивает контекст синхронизации.Это позволяет вам разместить единицу работы (выполнение какого-либо метода) в другом контексте - в данном случае в потоке пользовательского интерфейса.
С другой стороны, контекст потока - это структура, которая содержит всю необходимую информацию.выполнить код потока операционной системой.Если ОС необходимо изменить выполнение из одного потока в другой, она выполняет то, что называется переключением контекста.При переключении контекста поток, который в данный момент выполняется на ЦП, замораживается ОС, а текущее состояние всех регистров ЦП сохраняется в структуре контекста потока замороженного потока. Здесь - фактическая структура контекста потока в ОС Windows и здесь в Windows x64.Когда содержимое всех регистров ЦП перемещается в контекст потока замороженного потока, ОС находит другой (самый предыдущий) поток, который должен выполнить свой код, и перемещает содержимое своей структуры контекста потока в регистры ЦП.После этого переключение контекста заканчивается, и ЦП может выполнять код самого предыдущего потока, пока не произойдет другое переключение контекста.
Таким образом, контекст синхронизации и контекст потока - это две очень разные концепции.Контекст потока - это структура низкого уровня, которая позволяет ОС переключаться между потоками, в то время как контекст синхронизации - это механизм, упрощающий отправку рабочих элементов в различные контексты (в основном в разные потоки).