C++/Parallel (2) 썸네일형 리스트형 [정리 필요] std::async std::launch::deferred => 비동기 호출을 동일한 스레드에서 => 반환한 future 의 get() 을 호출 할 때 실행된다. std::launch::async => 비동기 호출을 다른 스레드에서 promise future std::async 호출 시, future 를 반환(적절히 템플릿 작성) promise 의 get 을 통해 future 를 반환 => 다른 스레드에서 promise 에 대해서 set_value 혹은 set_value_at_thread_exit() 등을 통해 future 에서 값을 얻도록 할 수 있다 wait_for 등을 사용하면 일정시간 동안만 기다릴 수 있다. => 현재 태스크의 상태 값등을 확인 할 수 있다. ==> future_status::deferred => .. C++ 멀티 스레딩 - 메모리 모델 [1. 원자계] std::atomic_flag clear() => flag 값을 false 로 test_and_set() => flag 값을 true 로, 읽기와 쓰기 연산이 하나의 원자계 연산으로 수행 된다. 최초 생성 시, ATOMIC_FLAG_INIT 상수를 이용해 false 로 초기화 해야 한다. 잠김 없는 유일한 원자계 더 높은 수준의 스레드 추상화를 위한 빌딩 블록 std::atomic_flag 를 이용한 spinlock 구현 std::atomic 이전 1 다음