Ok, thanks, once means once. So https://pkg.go.dev/sync/atomic#Value seems 
to be a better fit, do you agree?

burak serdar schrieb am Freitag, 22. November 2024 um 16:10:00 UTC+1:

> On Fri, Nov 22, 2024 at 1:53 AM 'Hartmut Wieselburger' via golang-nuts
> <golan...@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...@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/0479f342-0b35-49b4-be81-c631bfe15900n%40googlegroups.com.

Reply via email to