본문 바로가기

시스템개발/cplusplus5

[비동기] async 사용법 2 async 사용법 2 promise, future를 사용하는 것은 직관적이지 않을 경우가 있다. get_future를 해야하고, set_value를 하기 때문에 return값은 void이다. async를 이용해서 바꿔보자. promise, future 스타일 #include #include #include #include using namespace std::chrono_literals; void add(std::promise prms, int n) { prms.set_value(n + 1); } int main() { std::promise prms; std::future fut = prms.get_future(); int num = 3; std::thread t(add, std::move(prms),.. 2022. 6. 16.
[비동기] shared_future 예제 shared_future를 사용한 예제 future, promise는 기본적으로 한쌍이다. 하지만 promise의 결과를 다수의 future에서 공유하여 값을 활용할 경우가 있다. 이 때 사용하는 것이 shared_future. #include #include #include #include using namespace std::chrono_literals; void fn(std::shared_future fut) { std::cout 2022. 6. 16.
[비동기] promise, future 사용 예제 및 예외처리 상황 promise, future를 사용한 예제 promise와 future를 사용하면 이 둘 간에 채널이 생성된다. 따라서 이 채널은 하나만 유지되어야 한다. 쓰레드로 인자로 promise를 넘길때, 단순히 promise를 넘기면 copy한다는 뜻이며 이는 1:1의 채널 관계가 어긋남을 뜻한다. 그래서 std::move를 이용하여 r-value로 인자를 넘겨준다. #include #include #include using namespace std::chrono_literals; void fn(std::promise prm) { std::this_thread::sleep_for(2s); prm.set_value(33); } int main() { std::promise prm; std::future fut =.. 2022. 6. 16.
[비동기] Async 사용 1 Async를 사용하는 방법 #include #include using namespace std::chrono_literals; int fn() { std::this_thread::sleep_for(1s); std::cout 2022. 6. 16.