I have some examples of lock-free structures at github.com/robaho/go-concurrency-test
Most lock-free structures should not depend on OS scheduling. Some that use “cpu id “ to partition would. > On Dec 5, 2022, at 12:02 PM, Andrew Athan <andrew...@gmail.com> wrote: > > I'm having trouble finding definitive information about golang's preemption > model when running with GOMAXPROCS>1 on a multi-core Intel with preemtive > linux kernel. > > As I understand it, in such a scenario, two goroutines may be scheduled by > the go runtime onto two separate system threads on two separate CPUs. > > Isn't it true then, that irrespective of whether the two goroutines are > scheduled onto separate CPUs, the OS may preemptively interrupt either of > those goroutines to let the other run? Also, that if they are indeed > scheduled onto separate CPUs, that the memory accesses made by those > goroutines are interleaved even if no individual goroutine is "preempted"? > > I'm asking because in reviewing the code of some "lock free" concurrent data > structures written in go, it appears the authors have made certain > assumptions about race conditions (e.g., the code of on goroutine assumes > that another goroutine won't perform a load/store between two function calls > the first goroutine makes to check a boolean and store a value). > > Given that goroutines are mappes onto system threads, and that in a > preemptive kernel those threads may be preempted and/or irrespective of the > preemptive kernel issue may run on separate cores, no assumptions should be > made about the "atomicity" of multiple statements in a goroutine relative to > other goroutines. Right? > > Where can I get the most current and accurate information about this topic? > > A. > -- > 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/0912663b-d4cb-41ee-a335-466c74b00d8cn%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 on the web visit https://groups.google.com/d/msgid/golang-nuts/8F0BDFB7-231D-4E55-AED8-86BE1DD286C5%40ix.netcom.com.