C++ Atomic::operator++() function



The C++std::atomic::operator++() function is used for atomic increment operations on atomic objects. This operator ensures that the increment operation is performed atomically, meaning it is thread safe and prevents race conditions.

The operator++() function can be used in both pre-increment and post-increment.

Syntax

Following is the syntax for std::atomic::operator++() function.

T operator++() volatile noexcept;
T operator++() noexcept;
or
T operator++ (int) volatile noexcept;
T operator++ (int) noexcept;

Parameters

It does not accept any parameters.

Return Value

It returns the value of the atomic variable after the modification.

Exceptions

This function never throws exceptions.

Example

In the following example, we are going to consider the basic usage of the operator++() function.

#include <iostream>
#include <atomic>
int main()
{
    std::atomic<int> x(1);
    x++;
    std::cout << "Result : " << x << std::endl;
    return 0;
}

Output

Output of the above code is as follows −

Result : 2

Example

Consider the following example, where we are going to use the increment in the loop.

#include <iostream>
#include <atomic>
int main()
{
    std::atomic<int> x(3);
    for (int a = 0; a < 4; ++a) {
        ++x;
    }
    std::cout << "Result : " << x.load() << std::endl;
    return 0;
}

Output

Following is the output of the above code −

Result : 7

Example

Let's look at the following example, where we are going to use pre-increment and post-increment.

#include <iostream>
#include <atomic>
int main()
{
    std::atomic<int> x(2);
    int a = ++x;
    int b = x++;
    std::cout << "Pre-increment: " << a << std::endl;
    std::cout << "Post-increment: " << b << std::endl;
    std::cout << "Result : " << x.load() << std::endl;
    return 0;
}

Output

If we run the above code it will generate the following output −

Pre-increment: 3
Post-increment: 3
Result : 4
atomic.htm
Advertisements