Что такое promise в C++?
std::promise в языке программирования C++ предоставляет механизм для связи потока, который обещает предоставить значение в будущем (поставщик), с потоком, который ожидает получение этого значения (потребитель). std::promise является частью библиотеки для работы с многопоточностью (<future>), предоставляя удобный способ передачи значений между потоками.
#include <iostream>
#include <thread>
#include <future>
// Функция, которая обещает предоставить значение в будущем
void provider(std::promise<int>& promiseObj) {
int result = 42;
// Установка значения в promise
promiseObj.set_value(result);
}
// Функция, которая ожидает получение значения
void consumer(std::future<int>& futureObj) {
// Ожидание значения от promise
int result = futureObj.get();
std::cout << "Received value from provider: " << result << std::endl;
}
int main() {
// Создание promise и связывание его с future
std::promise<int> promiseObj;
std::future<int> futureObj = promiseObj.get_future();
// Создание потоков для поставщика и потребителя
std::thread providerThread(provider, std::ref(promiseObj));
std::thread consumerThread(consumer, std::ref(futureObj));
// Ожидание завершения потоков
providerThread.join();
consumerThread.join();
return 0;
}
Комментарии