일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 예외
- 티스토리챌린지
- 상속
- resource management class
- virtual function
- operator new
- c++
- 게임
- 영화 리뷰
- 스마트 포인터
- iterator
- exception
- 암시적 변환
- lua
- 영화
- Effective c++
- 보편 참조
- implicit conversion
- 반복자
- reference
- universal reference
- Smart Pointer
- effective modern c++
- 참조자
- UE4
- effective stl
- 오블완
- std::async
- more effective c++
- 언리얼
- Today
- Total
목록std::async (3)
스토리텔링 개발자

항목 38. 스레드 핸들 소멸자들의 다양한 행동 방식을 주의하라 시스템 스레드의 핸들(handle) 종류joinable(합류 가능) std::thread지연되지 않은 task(항목 35 참조)의 future 객체허나 이 둘의 소멸자는 아주 다르게 동작한다. joinable std::thread의 소멸자프로그램이 종료된다.(항목 37 참조) future 객체의 소멸자상황에 따라 암묵적 join, 암묵적 detach로 동작한다.허나 프로그램이 종료되는 일은 없다. future 객체의 행동 방식future 객체는 호출한 쪽에서 피호출자의 값을 읽기 위해 사용하는 채널이다.피호출자는 (보통은 비동기적으로) 계산하여 그 결과를 통신 채널에 기록한다.(보통은 std::promise)호출자는 future..
항목 36. 비동기성이 필수일 때에는 std::launch::async를 지정하라 std::async 호출함수를 비동기적으로 실행하겠다는 의미하지만 늘 그런 의미일 필요는 없다.함수를 어떤 시동 방침(launch policy)에 따라 실행한다는 의미도 가진다. 표준이 제공하는 시동 방침std::launch 라는 enum으로 제공된다.std::launch::asyncf는 반드시 비동기적으로(다른 스레드에서) 실행된다.std::launch::deferredf는 std::async가 리턴한 future 객체에 대해 get이나 wait가 호출될 때까지 실행이 지연된다.std::async의 기본 방침은 위 두 가지를 or로 결합한 것이다.결과적으로 기본 방침으로는 함수의 실행이 비동기일수도 동기일수도 있다...
항목 35. 스레드 기반 프로그래밍보다 태스크 기반 프로그래밍을 선호하라 함수 비동기 호출doAsyncWork라는 함수를 비동기로 실행한다고 하면..방법은 두 가지이다.std::thread 객체를 생성스레드 기반(thread-based) 프로그래밍std::async를 사용태스크 기반(task-based) 프로그래밍int doAsyncWork();// 스레드 기반std::thread t(doAsyncWork);// 태스크 기반auto fut = std::async(doAsyncWork); 두 방법의 차이점doAsyncWork는 리턴값이 있는데...스레드 기반에서는 여기에 접근할 방법이 없다.태스크 기반에서는 async가 리턴한 객체(future 객체)를 통해 접근할 수 있다.doAsyncWork가 ..