boost::signal2의 유일한 단점은 컴파일 및 링크 시간에 미치는 영향으로, 여드름 및 기타 격리 기술을 통해 줄일 수 있으므로 컴파일은 실제로 필요할 때만 트리거됩니다. 이 블로그 게시물 동안 내 마음에 온 한 가지 아이디어는 std_signal2 헤더, 부스트 유형 (기능, 뮤 텍스 등)을 해당 std 유형으로 대체. 이것이 어떻게 작동하는지 확실하지 않지만 boost::signals2는이 작업을 수행하기 위해 꽤 잘 빌드 된 것 같고 많은 템플릿 매개 변수에는 라이브러리를 구성하는 기본 값이 있으며 매일 사용법으로 숨김이 있습니다. s()는 호출된 마지막 함수의 결과를 직접 반환하지 않습니다. 형식 boost::optional의 개체가 반환되며, 참조해제되면 숫자 2가 반환됩니다. 함수와 연결되지 않은 신호를 트리거해도 반환 값이 생성되지 않습니다. 따라서 이 경우 boost::optional을 사용하면 Boost.Signals2가 빈 오브젝트를 반환할 수 있습니다. 부스트::선택 사항이 21장에 도입되었습니다. 솔직히, 나는 signals2를 사용하지 않도록 할 수 있다면, 나는 하나의 특정 단점이 있기 때문에, 것 : 빌드 시간 증가. 지금까지 내 프로젝트는 작은 일종의, 단지 몇 가지 클래스, 대부분의 다음 100 loc.
부스트를 추가:::signals2 클래스에 디버깅 또는 그냥 보고 에 대 한 프로젝트를 신속 하 게 구축 하기 어렵게 지난 시간의 작업이 여전히 컴파일 하는 경우. boost::signals2에는 인수로 서명이있는 신호 템플릿이 있으며,이 신호 유형에는 슬롯 유형에 대한 typedef가 있습니다. Boost.Signals 라이브러리. 주로 자동 연결 관리와 관련하여 스레드 안전을 지원하기 위해 인터페이스가 약간 변경되었습니다. 이 구현은 프랭크 모리 헤스에 의해 작성되었습니다. 또한 팀모 스탠지, 피터 디모프, 토니 반 어드가 아이디어와 피드백을 받았고, 더글라스 그레고르에게 Boost.Signals의 오리지널 버전이 있었기 때문입니다. 실시예 67.2에서 람다 함수는 f가 호출될 때도 실행됩니다. std::함수는 예제 67.2와 같은 시나리오에서만 사용할 수 있지만 Boost.Signals2는 훨씬 더 다양한 기능을 제공합니다. 예를 들어, 여러 함수를 특정 신호와 연결할 수 있습니다(실시예 67.3 참조).
Boost.Signals2 라이브러리는 관리되는 신호 및 슬롯 시스템의 구현입니다. 신호는 여러 대상이 있는 콜백을 나타내며 유사한 시스템의 게시자 또는 이벤트라고도 합니다. 신호는 콜백 수신기(이벤트 대상 또는 구독자라고도 함)인 일부 슬롯 집합에 연결되며, 신호가 “내보내지면”호출됩니다. 여기서 한 가지 세부 사항은 기본 부스트 ::signals2:connection 클래스가 없는 동안 제거 ()를 호출하는 scoped_connection을 사용한다는 것입니다.