Преглед изворни кода

SVI Добавление примеров

SVI пре 2 година
родитељ
комит
8627b37865
1 измењених фајлова са 16 додато и 0 уклоњено
  1. 16 0
      docs/lesson02.md

+ 16 - 0
docs/lesson02.md

@@ -15,6 +15,7 @@
   - [Работа с select](#работа-с-select)
   - [Пример мультиплексора](#пример-мультиплексора)
   - [Пример демультиплексора](#пример-демультиплексора)
+  - [Пример семафора](#пример-семафора)
 
 Каналы в `go` являются попыткой решить проблему безопасности данных в конкуретной среде.
 Это неидеальная попытка реализовать [монитор Хоара](https://ru.wikipedia.org/wiki/Монитор_(синхронизация)). Неидеальность связана с тем, что подавляющая часть решений в `go` продиктована несколькими соображениями:
@@ -221,6 +222,21 @@ func run(chIn <-chan int){
     }
 }
 ```
+## Пример семафора
+
+```golang
+chEnd := make(chan struct{}, 1)
+
+go func(){
+    defer close(chEnd)
+    time.Sleep(time.Second * 1)
+}()
+
+<-chEnd
+
+log.Println("End work")
+```
+
 
 Примеры использования каналов: