Thread Synchronization (C++) std::promise and std::future (C++) When to use? This method is generally preferred of over the Condition Variable when we only want the task to be executed once. How to include #include <future> Example // C++ program to illustrate the use of std::future and // std::promise in thread synchronization. #include <iostream> #include <thread> using namespace std; // callable void EvenNosFind(promise<int>&& EvenPromise, int begin, int end) { int evenNo = 0; for (int i = begin; i <= end; i++) { if (i % 2 == 0) { evenNo += 1; } } EvenPromise.set_value(evenNo); } // driver code int main() { int begin = 0, end = 1000; promise<int> evenNo; future<int> evenFuture = evenNo.get_future(); cout << "My thread is created !!!" << endl; thread t1(EvenNosFind, move(evenNo), begin, end); cout << "Waiting..........." << endl; // getting the data cout << "The no. of even numbers are : " << evenFuture.get() << endl; t1.join(); return 0; }