[c++] C++에서의 future와 promise 사용
C++에서 future
와 promise
는 병행 프로그래밍 및 비동기 작업을 수행할 때 유용한 프로그래밍 패턴입니다. future
는 비동기 작업의 결과를 나타내고, promise
는 비동기 작업의 결과를 설정하는 수단입니다.
Promise와 Future 개념
promise
와 future
의 주요 아이디어는 메인 스레드와 백그라운드 스레드에서 데이터를 주고 받을 때의 안정성을 보장하는 것입니다. promise
는 비동기 작업의 결과를 설정할 수 있으며, future
는 해당 결과를 가져올 수 있습니다.
Promise와 Future의 예제
다음은 promise
와 future
의 간단한 예제입니다.
#include <iostream>
#include <future>
void setValue(std::promise<int> *promObj)
{
promObj->set_value(10);
}
int main()
{
std::promise<int> promiseObj;
std::future<int> futureObj = promiseObj.get_future();
std::thread threadObj(setValue, &promiseObj);
std::cout << "Value: " << futureObj.get() << std::endl;
threadObj.join();
return 0;
}
위 코드에서, setValue
함수는 promise
를 사용하여 future
에 값을 설정하고, main
함수는 future
를 사용하여 해당 값을 가져옵니다.
Promise와 Future의 활용
promise
와 future
는 C++에서 병행 프로그래밍, 작업 큐, 스레드 풀 등과 함께 사용되어 비동기 작업을 보다 효율적으로 수행할 수 있도록 도와줍니다.
결론
promise
와 future
는 C++에서 비동기 작업의 결과를 안전하게 처리하고 관리하는 데 사용되는 강력한 도구입니다. 이를 통해 프로그래머들은 안정적이고 효율적인 병행 및 비동기 프로그래밍을 할 수 있습니다.
참고 문헌:
- https://en.cppreference.com/w/cpp/thread/future
- https://en.cppreference.com/w/cpp/thread/promise