浏览代码

SVI Исправления

SVI 2 年之前
父节点
当前提交
93c3d1c3d2
共有 1 个文件被更改,包括 8 次插入8 次删除
  1. 8 8
      docs/lessons02.md

+ 8 - 8
docs/lessons02.md

@@ -11,7 +11,7 @@
   - [Неявные правила работа с данными](#неявные-правила-работа-с-данными)
   - [Как определить есть ли что-то в канале](#как-определить-есть-ли-что-то-в-канале)
     - [Что не так с длиной канала](#что-не-так-с-длиной-канала)
-  - [Примеры](#примеры)
+  - [Пример](#пример)
 
 Каналы в `go` являются попыткой решить проблему безопасности данных в конкуретной среде.
 Это неидеальная попытка реализовать [монитор Хоара](https://ru.wikipedia.org/wiki/Монитор_(синхронизация)). Неидеальность связана с тем, что подавляющая часть решений в `go` продиктована несколькими соображениями:
@@ -90,15 +90,15 @@ flowchart LR
 - кто канал создал -- тот его и закрывает;
 - кто канал создал -- тот и отдаёт канал, но _только для чтения_;
 - кто канал читает -- ничего с ним не делает;
-- при длительный операциях надо специальным вызовом дават ьвозможность рантайму немного поработать.
+- при длительных операциях надо специальным вызовом давать возможность рантайму немного поработать.
 
-При соблюдении первых трёх правил -- в четвёртом случае ничего и не получится. Но часто придётся работать с каналами, которые не подчиняются первым трём правилам. Об это стоит помнить.
+При соблюдении первых трёх правил -- в других случаях ничего плохого не случится. Но часто придётся работать с каналами, которые не подчиняются первым трём правилам. Об этом стоит помнить.
 
 ## Неявные правила работа с данными
 
 Мало передать структуры и данные через каналы, чтобы избежать гонок данных.
 
-Надо понимать, что как только данные попали в канал _по ссылке_ -- теперь есть две ссылки,которые указывают на одни и теже данные.
+Надо понимать, что как только данные попали в канал _по ссылке_ -- теперь есть _две ссылки_, которые указывают на _одни и теже данные_.
 
 Поэтому два железных правила:
 
@@ -122,15 +122,15 @@ if countMsg == 0{
 ### Что не так с длиной канала
 
 Проблема в том, что в канал пишет один поток, а длину (обычно) проверяет другой.
-И пока второй поток что-то делает с каналом -- первый в это время может ещё дописать данных.
+И пока второй поток что-то делает с каналом -- первый в это время может ещё дописать данных. Или другой поток может прочитать данные из этого же канала.
 
 **На текущую длину канала в потребителе полагаться нальзя!**
 
 Единственный надёжный метод -- итерация по каналу в цикле.
 
-## Примеры
+## Пример
 
ервый пример показывает:
+Пример показывает:
 
 - как правильно создать канал;
 - как правильно читать из канала;
@@ -161,4 +161,4 @@ func runReader (chProd <-chan int){
 
 chProd := runWriter()
 runReader(chProd)
-```
+```