Countdown seit if true ist



  • Hallo alle,

    ich habe folgendes Problem:

    Wenn A nach 30 Sekunden noch wahr ist, soll eine Fehlermeldung ausgegeben werden. Währenddessen soll das Programm aber nicht anhalten, um den Countdown runterzuzählen.

    Für Ideen bin ich dankbar 🙂

    Grüße,
    Joe



  • Währenddessen soll das Programm aber nicht anhalten, um den Countdown runterzuzählen.

    http://en.cppreference.com/w/cpp/thread



  • std::mutex A_mutex;
    
    auto th = std::thread{[&A, &A_mutex]()
                          {
                              std::this_thread::sleep_for( std::chrono::seconds{30} );
                              std::lock_guard<std::mutex> lock_guard{A_mutex};
                              if( A ) 
                                  /* Fehlermeldung */
                          }};
    
    // Arbeiten ...
    
    th.join();
    

    Ungetestet

    Und dann immer schön den mutex locken/unlocken, wenn du A veränderst.

    A_mutex.lock();
    A = ...
    A_mutex.unlock();
    

    Funktioniert natürlich mit Boost.Thread genauso.

    Edit: Ah, hab den Mutex nicht fürs Lambda gecaptured.


Anmelden zum Antworten