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를 사용한 후).

⚛ 원문
Email 답글이 올라오면 이메일로 알려드리겠습니다.

혹시 처음이세요?
레디스게이트에는 레디스에 대한 많은 정보가 있습니다.
레디스 소개, 명령어, SQL, 클라이언트, 서버, 센티널, 클러스터 등이 있습니다.
혹시 필요한 정보를 찾기 어려우시면 redisgate@gmail.com로 메일 주세요.
제가 찾아서 알려드리겠습니다.
 
close
IP를 기반으로 보여집니다.