std::packaged_task<R(Args...)>:: reset
From cppreference.net
<
cpp
|
thread
|
packaged task
C++
Concurrency support library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::packaged_task
| Member functions | ||||
| Getting the result | ||||
| Execution | ||||
|
packaged_task::reset
|
||||
| Non-member functions | ||||
| Helper classes | ||||
|
(until C++17)
|
||||
| Deduction guides (C++17) |
|
void
reset
(
)
;
|
(C++11 이후) | |
이전 실행 결과를 포기하고 상태를 재설정합니다. 새로운 공유 상태가 구성됩니다.
f
가 저장된 태스크일 때,
*
this
=
packaged_task
(
std
::
move
(
f
)
)
와 동등합니다.
목차 |
매개변수
(없음)
반환값
(없음)
예외
- std::future_error 이 * this 가 공유 상태를 가지고 있지 않은 경우. 오류 조건은 no_state 로 설정됩니다.
- std::bad_alloc 이 새로운 공유 상태를 위한 충분한 메모리가 없는 경우.
-
새로운
packaged_task의 이동 생성자 에 의해 발생하는 모든 예외.
예제
이 코드 실행
#include <cmath> #include <future> #include <iostream> #include <thread> int main() { std::packaged_task<int(int,int)> task([](int a, int b) { return std::pow(a, b); }); std::future<int> result = task.get_future(); task(2, 9); std::cout << "2^9 = " << result.get() << '\n'; task.reset(); result = task.get_future(); std::thread task_td(std::move(task), 2, 10); task_td.join(); std::cout << "2^10 = " << result.get() << '\n'; }
출력:
2^9 = 512 2^10 = 1024