std::mutex protects data accessed by multiple threads.

std::atomic_int temp{0};
std::mutex _mutex;

std::thread t( [&](){
                  
                  while( temp!= -1){
                      std::this_thread::sleep_for(std::chrono::seconds(5));
                      std::unique_lock<std::mutex> lock( _mutex);
                      
                          temp=0;
                  }
              });

while ( true )
{
    std::this_thread::sleep_for(std::chrono::milliseconds(1));
    std::unique_lock<std::mutex> lock( _mutex, std::try_to_lock);
    if ( temp < INT_MAX )
        temp++;
    cout << temp << endl;
    
}