[C++] 비동기 스레딩. future, async

C++은 비동기적 스레딩에 대한 기능도 제공을 한다.
헤더에 구현되어있다.

일단은 async라는 함수에 콜백함수를 인자로 넣어주면 thread에 생성 인자 넘겨주는 것처럼 스레드가 생성된다.
이렇게



그리고 이 비동기 스레드의 차별점 중 하나는 스레드의 반환값을 처리할 수 있다는 것이다.
이렇게.
근데 미래 값을 get 하니까 이제야 겹쳐서 실행이 된다. 왜 그럴까. 나도 잘 모르겠다.
반환값 사용 여부에 따라서 더 효율적인 방향으로 작동 순서를 처리해주는 것 같다.
이 async란게 좀더 추상화된 thread라고 하니...


그리고 async 함수의 첫번째 인자에는 launch::의 두가지 열거를 전달해서 스레드의 동작 방식을 명시할 수 있다.
launch::async는 일단 비동기적으로 수행을 하라는 뜻이다.
이렇게 일단 수행은 된다.

그리고 launch::deffred은 지연 평가를 수행한다. 스레드의 반환값이 쓰일 때에 맞춰서야 스레드를 수행하는 것이다.
이렇게 값 안쓰면 그냥 증발한다.

쓰는 것만 이렇게
하면 반환되는 미래 객체가 get되거나 wait된 스레드만 수행이 된다.
이런걸 지연 평가라 한다.

아는 게 없으니까 쓰기도 힘들다.
일단 이 글은 더 공부하면서 고쳐나가도록 하겠다.
Standard library header - cppreference.comStandard library header < cpp ‎ | header C++ Language Headers Named requirements Language support library Concepts library (C++20) Diagnostics library Utilities library Strings library Containers library Algorithms library Iterators library Numerics library Input/output library Localization...en.cppreference.com https://en.cppreference.com/w/cpp/header/future