shad-go/once
2022-03-15 23:49:56 +03:00
..
once.go go fix old build tags. 2022-03-15 23:49:56 +03:00
once_test.go Stress test added 2021-03-05 18:23:03 +03:00
README.md fix 29 typos 2022-03-08 18:56:01 +03:00

once

sync.Once решает задачу ленивой инициализации.

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

Что нужно сделать?

Нужно написать реализацию Once, используя каналы.

Использование пакета sync в этой задаче запрещено!

type Once struct {}

func (o *Once) Do(f func()) {}

Do вызывает функцию f тогда и только тогда, когда Do вызывается впервые для данного экземпляра Once.

Важное свойство: код f должен завершиться до того, как завершится любой из конкурентных Do.