shad-go/once
2021-03-05 18:23:03 +03:00
..
once.go Add once. 2021-03-05 14:27:37 +03:00
once_test.go Stress test added 2021-03-05 18:23:03 +03:00
README.md Add once. 2021-03-05 14:27:37 +03:00

once

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

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

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

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

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

type Once struct {}

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

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

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