Atomicity of concurrent programs