bfiber_0100
Boost.Fiber Implementation 구현
Implementation 구현
fcontext_t
구현에서는 기본적으로 'fcontext_t'를 사용합니다.
'fcontext_t'는 어셈블러를 기반으로 하며 모든 플랫폼에서 사용할 수는 없습니다.
하지만 'ucontext_t' 및 'WinFiber'보다 훨씬 더 나은 성능을 제공합니다.
(컨텍스트 전환은 CPU 주기의 두 배 정도를 차지합니다. 섹션 성능 참조)
https://www.boost.org/doc/libs/release/libs/context/doc/html/context/performance.html
ucontext_t
대안으로 ucontext_t는 'BOOST_USE_UCONTEXT'와 b2 속성 'context-impl=ucontext'로 컴파일하여 사용할 수 있습니다.
'ucontext_t'는 더 넓은 범위의 POSIX 플랫폼에서 사용할 수 있지만 몇 가지 단점이 있습니다
(예를 들어 C99를 따르지 않고 POSIX.1-2003부터 더 이상 사용되지 않음).
• Note
call/cc는 ucontext_t를 구현으로 사용하여 세그먼트화된 스택만 지원합니다.
WinFiber
BOOST_USE_WINFIB 및 b2 속성 'context-impl=winfib'을 사용하면 Win32-Fiber가 call/cc 구현으로 사용됩니다.
TIB(스레드 정보 블록)가 MSDN에 완전히 설명되어 있지 않기 때문에 필요한 모든 TIB 부분이 교체되지 않을 수도 있습니다.
• Note
call/cc의 첫 번째 호출은 ConvertThreadToFiber()를 호출하여 스레드를 Windows 파이버로 변환합니다.
원하는 경우 ConvertThreadToFiber()에 의해 할당된 리소스를 해제하기 위해 사용자가 명시적으로 ConvertFiberToThread()를 호출해야 합니다
(예: Boost.context를 사용한 후).