shad-go/once
2024-06-05 20:36:34 +03:00
..
once.go go fix old build tags. 2022-03-15 23:49:56 +03:00
once_test.go Updated to the most recent version, which uses go 1.22 2024-06-05 20:36:34 +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.