Definition of Lock-Free

ISO/IEC JTC1 SC22 WG21 N3927 - 2014-02-13

Lawrence Crowl, Lawrence@Crowl.org

Introduction

This paper addresses issue LWG 2075: Progress guarantees, lock-free property, and scheduling assumptions. This issue is also US 5 in N3733 ISO/IEC CD 14882, C++ 2014, National Body Comments.

Wording

1.10 Multi-threaded executions and data races [intro.multithread]

Paragraph 2 remains unchanged as follows.

Implementations should ensure that all unblocked threads eventually make progress. [Note: Standard library functions may silently block on I/O or locks. Factors in the execution environment, including externally-imposed thread priorities, may prevent an implementation from making certain guarantees of forward progress. —end note]

Add a new paragraph after paragraph 2 as follows.

Executions of atomic functions that are either defined to be lock-free (29.7 [atomics.flag]) or indicated as lock-free (29.4 [atomics.lockfree]) are lock-free executions.