Concurrency in Go Chapter1 (3)

“Concurrency in Go: Tools and Techniques for Developers”の1章 “An Introduction to Concurrency”の読書メモ。Atomicityついて書く。

XがAtomicである、もしくはAtomicityな性質を持つとされる場合、Xが実行しているコンテキストでは、Xは不可分であり、別のものに割り込まれる余地はない。ある操作のAtomicityはコンテキストによって、変化する。特定のプロセスではAtomicなものも、OS全体からするとAtomicでない場合などがある。

++i

上記のような一見Atomicなコードがあるとする。以下の3つの動きに分割してみる。

  1. iの値を取り出す

1,2,3の動き1つずつはAtomicであり、1,2,3が逐次実行されるコンテキストあれば、1,2,3をまとめてもAtomicである。しかし、あるgoroutineと別のgoroutineがiを共有していた場合、Atomicityは保証されない。

Concurrentなコンテキストにおいて、Atomicなプログラムでないと、論理的な正しさを示すことができない。

--

--

Software engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store