Go programing language

Reference: https://en.wikipedia.org/wiki/Go_(programming_language)

Lack of race condition for safety

“Go’s approach to concurrency can be summarized as “don’t communicate by sharing memory; share memory by communicating”.[96] There are no restrictions on how go-routines access shared data, making race conditions possible. Specifically, unless a program explicitly synchronizes via channels or other means, writes from one go-routine might be partly, entirely, or not at all visible to another, often with no guarantees about ordering of writes.[97] Furthermore, Go’s internal data structures like interface values, slice headers, hash tables, and string headers are not immune to race conditions, so type and memory safety can be violated in multi_threaded programs that modify shared instances of those types without synchronization.[98][99] Instead of language support, safe concurrent programming thus relies on conventions; for example, Chisnall recommends an idiom called “aliases xor mutable”, meaning that passing a mutable value (or pointer) over a channel signals a transfer of ownership over the value to its receiver.
Omissions: …”