On Fri, Nov 8, 2019 at 6:25 AM Marvin Renich <m...@renich.org> wrote: > > * Kasun Vithanage <alanka...@gmail.com> [191107 23:47]: > > type Foo struct { > > Alive bool > > } > > > > type Bar struct { > > Foos []*Foo > > } > > > > func (b *Bar) CheckFoosAlive() { > > for i := 0; i < len(b.Foos); i++ { > > if b.Foos[i].Alive { > > fmt.Println("Alive") > > } > > } > > } > > > > func (b* Bar) MarkFooStatus(index int, status bool){ > > // after bound checking > > b.Foos[index].Alive = status > > } > > Volker's answer is very good, but for the simple case where Alive is (or > can be) a type that is handled by the atomic package, that is almost > certainly the best approach.
I was thinking about this. In general, it should be safe to replace Lock() read/write one value Unlock() with AtomicRead/Write Is that correct? The go memory model does not say anything about this. > > If the Foo struct is complicated, and you have lots of non-overlapping > access to b.Foos (with the occasional overlapping access), I strongly > suspect that putting a mutex in Foo and using that will give you the > best results. > > As Volker said, try several different approaches, and measure with loads > approximating your real-world scenario. Alternatively, implement the > approach that you think is easiest to maintain (from a source code POV), > and test to see if the performance is acceptable under load. If it is, > don't bother trying to optimize. > > ...Marvin > > -- > 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 on the web visit > https://groups.google.com/d/msgid/golang-nuts/20191108132521.bkrbxj2lv7wpinuo%40basil.wdw. -- 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 on the web visit https://groups.google.com/d/msgid/golang-nuts/CAMV2RqoGKG8FAqxn-M_E9hN3%2BzqX1UABWmdHu9w6rneKCu%2BsuA%40mail.gmail.com.