LINUX.ORG.RU

История изменений

Исправление lbvf50txt, (текущая версия) :

Ну да в том и есть мой пойнт, что го сделан так чтобы даже катаясь лицом по клаве нельзя было пробить дно.

Race Condtion это алгоритмическая проблема. И от самого его распространенного варианта Lost Update не помогут ни какие синтаксические и Runtime решение Golang.

Смысл Lost Update в том, что общий ресурс конкурирующие акторы затирают устаревшей информацией: Аня и Коля собирают яблоки и пишут результат на доску. Коля запоминает сколько было, добавляет свое и пишет результат на доску. Результаты работы Ани теряются. Это Lost Update.

Переводя на язык Go: горутина может перезаписывать значение переменной в общей области видимости других горутин. Или не правильно реализованный шаблон «single writer» - когда переменную обновляет уже одна горутина, но она сразу перезаписывает полную сумму из канала (total = newValue), вместо добавления дельты (total += delta).

Исправление lbvf50txt, :

Ну да в том и есть мой пойнт, что го сделан так чтобы даже катаясь лицом по клаве нельзя было пробить дно.

Race Condtion это алгоритмическая проблема. И от самого его распространенного варианта Lost Update не помогут ни какие синтаксические и Runtime решение Golang.

Смысл Lost Update в том, что общий ресурс конкурирующие акторы затирают устаревшей информацией: Аня и Коля собирают яблоки и пишут результат на доску. Коля запоминает сколько было, добавляет свое и пишет результат на доску. Результаты работы Ани теряются. Это Lost Update.

Переводя на язык Go: горутина может перезаписывать значение переменной в общей области видимости других горутин. Или не правильно реализованный шаблон single writer - когда переменную обновляет уже одна горутина, но она сразу перезаписывает полную сумму из канала, вместо добавления дельты.

Исходная версия lbvf50txt, :

Ну да в том и есть мой пойнт, что го сделан так чтобы даже катаясь лицом по клаве нельзя было пробить дно.

Race Condtion это алгоритмическая проблема. И от самого его распространенного варианта Lost Update не помогут ни какие синтаксические и Runtime решение Golang.

Смысл Lost Update в том, что общий ресурс конкурирующие акторы затирают устаревшей информацией: Аня и Коля собирают яблоки и пишут результат на доску, Коля запоминает сколько было добавляет свое и пишет результат на доску. Результаты работы Ани теряются. Это Lost Update.

Переводя на язык Go: горутина может перезаписывать значение переменной в общей области видимости других горутин. Или же не правильно реализованный шаблон singe writer - когда переменную обнавляет уже одна горутина, но она сразу перезаписывает полную сумму из канала, вместо добавления дельты.