Синхронизация или лучше для вашего понимания, давайте сначала поймем, что означает слово Синхронизация .
Не соглашайтесь с определением словаря, оно вас сейчас смущает. Вместо этого давайте возьмем упрощенную аналогию:
Когда мы идем, наши ноги синхронизированы! То есть они
coordinate/cooperate
вместе, чтобы завершить действие под названием
ходьба. Когда левая нога касается земли, правая нога покидает ее
(или находится в процессе ухода), и когда правая нога касается ее
наоборот.
Ключевой вывод: обе ноги имеют неявную координацию
что другие начнут (т.е. покинут землю) только тогда, когда первый
заземлен.
Так что говорить с точки зрения потоков и общих ресурсов. Эта же аналогия применима. Все потоки хотят работать с каким-то общим ресурсом (в нашем случае это земля). При этом им необходимо «координировать» там использование ресурса.
Поэтому, когда вы слышите слово «Синхронизация», вспомните слово coordinate/cooperate
. Надеюсь, ты понимаешь сейчас. Я намеренно не объясняю SynchronizationContext
, так как вы заявляете, что уже знаете это.
Обновление : хотя, во-вторых, я должен предоставить вам некоторые детали и здесь, с точки зрения аналогии:
Надеюсь, теперь вы понимаете, что означает синхронизация! Говоря в терминах SynchronizationContext
, это просто класс, который позволяет вам иметь синхронизацию (то есть координацию / взаимодействие) с ресурсами существующего потока пользовательского интерфейса (которые в основном являются компонентами пользовательского интерфейса и их состоянием). Обычно это достигается путем помещения сообщений в очередь потока пользовательского интерфейса вместо непосредственного изменения состояния пользовательского интерфейса.
Отказ от ответственности : Не пытайтесь самостоятельно провести аналогию с ходьбой, я только что потерял 2 калории, пытаясь выяснить synchronization
.
моей ноги.