Skip to content

Latest commit

 

History

History
 
 

once

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

once

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

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

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

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

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

type Once struct {}

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

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

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