std::noop_coroutine

std::noop_coroutine (no-op 코루틴 핸들)

아무 작업도 수행하지 않는 특수한 no-op 코루틴을 나타내는 핸들을 돌려주는 함수예요. co_await std::noop_coroutine()으로 제어권을 주고받을 수 있는 기본 코루틴이에요. C++20부터 있어요.

출처: cppreference

본문

<coroutine> 헤더에 정의돼 있고, no-op 코루틴용 핸들을 돌려줘요.

std::noop_coroutine_handle noop_coroutine() noexcept;

noop_coroutine()은 특별한 "no-op 코루틴"을 나타내는 std::noop_coroutine_handle(std::coroutine_handle<std::noop_coroutine_promise>의 별칭)을 돌려줘요. 이 코루틴은 실제로 아무 계산도 수행하지 않는 예약된 코루틴이에요.

반환된 핸들은:

  • 재개(resume)해도 아무 일도 일어나지 않아요.
  • 완료 상태는 아니므로 done()false예요.
  • 파괴(destroy)해선 안 돼요. (no-op 코루틴은 특별 관리되므로 파괴는 금지.)

co_await std::noop_coroutine()을 쓰면 현재 코루틴이 제어권을 돌려주되, 특별히 실행할 작업 없이 "나중에 재개될 때까지 멈추는" 것보다 더 가벼운 방식으로 동작할 수 있어요. 기본적인 스케줄링·테스트 모의(mocking) 시나리오에서 no-op awaiter로 쓰여요.

std::noop_coroutine_handlestd::coroutine_handle<std::noop_coroutine_promise> 타입으로, 일반 코루틴 핸들과 마찬가지로 resume(), done()등을 호출할 수 있지만 그 동작이 no-op 코루틴에 맞게 특수해요.

더 알아보기 (Learn more)

cppreference