Difference between revisions of "Atomic Operation"
Chris Tyler (talk | contribs) (Created page with 'Category:Computer Architecture An ''atomic operation'' is one that cannot be interrupted. These operations are typically used for acquiring locks. Consider the following cod…') |
(No difference)
|
Revision as of 13:09, 7 January 2014
An atomic operation is one that cannot be interrupted. These operations are typically used for acquiring locks.
Consider the following code, intended to set a "lock" in shared memory so that only one thread or process performs a particular action at a time:
if (lock == 0) { lock++ /* Perform exclusive action */ lock-- } else { abort() }
If another process or thread writes to the lock variable between the lock comparison (lock == 0) and setting the lock (lock++), then the lock could fail to ensure exclusive action.
There are two ways to accomplish an atomic operation:
- Use a single machine instruction.
- Tell the operating system in advance not to interrupt the operation.
GCC provides intrinsics for some atomic operations.