async()
-
packaged_task를 이용한 스레드 풀 구현 2Modern C++/Task 기반 비동기 프로그래밍 2020. 8. 28. 22:58
이전 장에 std::async 와 동일한 작업을 수행하는 함수를 구현해 보았다. 이제는 스레드에서 호출되는 람다를 queue에 저장하는 코드를 구현해 보자 2. queue 에 task 푸시 #include #include #include #include //람다 저장용 task_queue std::queue task_queue; #include template std::future async(Func&& func, Args... args) { using Result = std::result_of_t; //task 객체가 현재 범위를 벋어나면 사용 할 수 없으므로 동적으로 할당 auto task = new std::packaged_task( std::bind(std::forward(func), std::f..