order specified for failure must not be stricter than that specified for success. So, if [Memory\_Order\_Failure =&gt; Acquire]{} or [Memory\_Order\_Failure =&gt; Sequentially\_Consistent]{} is specified, these have also be given for success.

For read access to a read-modify-write variable, attribute [Concurrent\_Read]{} has to be used. The parameter [Memory\_Order]{} has to be given. Its value is one of [Sequentially\_Consistent]{}, [Acquire]{}, [Relaxed]{}. The default value is.

Again, aspects for variable specific default values for the attributes described above may be specified when declaring a read-modify-write variable. The aspects are [Memory\_Order\_Read]{}, [Memory\_Order\_Write\_Success]{}, and with allowed values as above.

[Synchronization Loops]{} As presented below synchronization by [synchronized]{} variables is performed via spin loops. We call these loops [*sync loops*]{}.

[[Concurrent]{} Objects]{}\[nbPO\]

[Non-Blocking Synchronization]{}

Besides the aspects and attributes proposed in Section \[aspects\] that have to be used for implementing [concurrent]{} objects, [concurrent]{} objects are different from protected objects in the following way. All operations of [concurrent]{} objects can be executed in parallel. [Synchronized]{} variables have to be used for synchronizing the executing operations. Entries have Boolean-valued guards. The Boolean expressions for such guards may contain only [synchronized]{} variables declared in the data part of the protected object and constants. Calling an entry results either in 