On Fri, Nov 22, 2024 at 1:53 AM 'Hartmut Wieselburger' via golang-nuts <golang-nuts@googlegroups.com> wrote: > > var configOnce sync.Once > func Reset() { > configOnce = sync.Once{} > }
This is not resetting. You are creating a new sync.Once and assigning that to a variable. That variable, configOnce, is shared among multiple goroutines, because that is what Once is used for, to limit the execution of a function called by multiple goroutines to a single execution. The Reset function sets this shared variable without any synchronization, so this is a data race. Also note that reassigning a Once instance like this may not behave as you expect. Any goroutine that is waiting on that Once instance will continue waiting until the Once function is done. The behavior of a goroutine that reads Once after Reset() is undefined. Since there is a data race, there is no guarantee on which instance of Once another goroutine will see. A goroutine may see the completed instance of Once even after you Reset() it. > > func Load() *Config { > configOnce.Do(func() { > ... > } > > burak serdar schrieb am Donnerstag, 21. November 2024 um 21:24:40 UTC+1: >> >> On Thu, Nov 21, 2024 at 1:14 PM 'Hartmut Wieselburger' via golang-nuts >> <golan...@googlegroups.com> wrote: >> > >> > Hi, >> > is there a way to reset sync.OnceValue(s), as you can do it with sync.Once? >> >> How can you reset a sync.Once? >> >> > A common use case is loading a config. I would like to switch from >> > sync.Once to sync.OnceValue, but I need to a chance to reload my config, >> > without restarting my service. >> > If this is possible with sync.OnceValue, please let me know. Otherwise the >> > new OnceValue(s) are useless for me. >> > >> > Regards, Harti >> > >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "golang-nuts" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> > email to golang-nuts...@googlegroups.com. >> > To view this discussion visit >> > https://groups.google.com/d/msgid/golang-nuts/46b4a4ff-18cd-494a-9ac0-3a40cf2074e2n%40googlegroups.com. > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion visit > https://groups.google.com/d/msgid/golang-nuts/f3df358a-d4ae-441c-9ff6-30af9ad1c568n%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/CAMV2RqrLsKhZi0HcxfpE9VzF49Sbhe17m%3D0ddR0HKimj6z%2BM9w%40mail.gmail.com.