Що таке 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;
}
Коментарі