2013-09-29 5 views
2

라이브러리 Loki와 새로운 표준 C++ 11에 관해 몇 가지 질문이 있습니다.Loki와 C++ 11

첫 번째 질문은 라이브러리의 LevelMutex 기능에 관한 것입니다. LevelMutex은 기능을 구현하기 위해 Windows에서 CRITICAL_SECTION을 직접 사용하고 에서 pthread_mutex_t을 사용합니다. 수업은 매우 훌륭하고 디자인은 이지만 내 머리 속에 질문이 남아 있습니다. 이제 우리는 새 래퍼 (std::mutex)을 낮은 값의 객체 인 을 대체 할 가치가 있습니까? 그렇지 않다면, 왜? 내 요점은 그 것이다 - Loki에서 많은 컴파일러 검사를 제거 할 수 있습니다. - 표준 라이브러리에서 변경이 발생하면 Loki의 최신 버전을 유지하고 Loki로 모든 변경 사항을 푸시합니다. - Loki의 std::mutex

나는 std::mutex 그냥 예외는 시스템 특정 오류 래퍼하지만 여전히 ... 같은 질문 Threads.h의 기능에 적용하는 플랫폼 뮤텍스 개체 주위에 래퍼 것을 알고있다.

내 두 번째 질문은 Loki에서 구현 된 SmartPtr에 관한 것입니다. shared_ptr, unique_ptr 등이 주어진다면이 구현을 사용할 가치가 있다고 생각하십니까? 그렇다면 왜? 그렇지 않다면, LockingPtr 구현을 쓰레기 안전 shared_ptr을 얻기 위해 다시 작성하는 것이 좋습니다.

내 마지막 질문은 C++ 11 표준의 새로운 std::thread 기능에 관한 것입니다. 과 같은 특정 기능에 대한 정책 클래스를 작성하여 결합 가능한 스레드 또는 분리 가능한 스레드를 만들 수있는 방법을 생각 중입니다. 귀하의 의견으로는 std::thread의 어떤 부분에 대한 정책을 작성하는 것이 재미 있을까요?

미리 답변 해 주셔서 감사합니다.

답변

3

광범위하고 다소 주관적인 주제이며 개인적인 조언 만 드릴 수 있습니다. 나는 한 걸음 뒤로 물러나 더 큰 그림을 보는 것이 중요하다고 생각하므로 세부 사항으로 들어가지 않을 것입니다.

새로운 C++ 11 표준을 사용하고 다른 라이브러리를 표준 라이브러리가 제공하는 모든 것으로 대체하여 좋은 경험을했습니다. 그리고 "나"에 의해, 나는 또한 내가 일하는 곳의 코드 기반 (직원이 100.000 명 이상인 부서)을 의미합니다.

Loki 나 Boost와 같은 라이브러리는 새로운 국경을 탐험하고 C++을 앞으로 이끌어 냈습니다. 실제로 Boost는 궁극적으로 표준화 될 새로운 구성 요소를 만드는 것이 었습니다. std::shared_ptr, std::threadstd::mutex의 표준화 된 버전이 몇 가지 세부 사항이 결여 수도 있지만

것은 그들이 아니라 그들이 컴파일러와 표준 라이브러리 운송의 일부임을 감안, 휴대용 설계, 그들은 아주 잘 테스트! 이것들은 그들에게 유리하게 중요한 포인트입니다. 또한 코드를 미래의 증거로 만들고 유지 보수하기 쉽도록 도와줍니다. 새로운 사람들이 뛰어 들기가 더 쉽습니다.

제 조언은 다음과 같습니다. C++ 11 (표준 라이브러리 포함)을 제공해야합니다. 가능한 한 많이필요하다면 Loki, Boost 또는 다른 라이브러리 만 사용하고 개발 후에는 마음을 열어 두십시오.

+0

나는 당신의 요지를 얻었고 이것은 정확히 내가 왜이 질문을했는지, 나는 항상 안정되고 시험 된 것을 사용하려고 노력한다. 그래서 여러분의 의견으로는 Loki에서 새로운 (그리고 테스트 된) 기능을 사용하기 위해 약간의 수정을하는 것은 나쁜 일이 아닙니다. – Athanase

+0

@Athanase 기본적으로 그렇습니다. Loki에 통합 될 수 있는지 또는 추가 레이어가 자신 만의 버전을 만들 정도로 충분히 얇은 지 확인합니다. 자신 만의 Loki 포크를 유지하면 몇 가지 문제가 생길 수 있으며 의존성을 없애면 안정성에 도움이됩니다. 가능한 한 표준 라이브러리를 사용하여 Loki에서 처음부터 필요로하는 부분을 작성하는 것을 고려하십시오. 또한,'std :: shared_ptr' 등을 사용해보십시오. al. 직접. Loki의 PBD는 훌륭하게 들리지만, 결국 실제로는'std :: shared_ptr'을 훨씬 좋아합니다. –

+0

나는 알렉산드레스쿠 (Alexendrescu)의 저서에서 도서관을 알고 있기 때문에 로키 (Loki)의 근원을 많이 보았다. 그것은 완전히 행해질 수 있으며 가능한 한 빨리 작업을 시작할 것입니다. 또한 나는 많은 사람들이 "pthread를 감싸는 래퍼라면 그냥 std :: thread를 쓰는 이유를 들었고 C 배열을 감싸는 래퍼라면 그냥 std :: vector를 쓰는 이유를 들었다. 퍼포먼스를 떨어 뜨리는 함수 호출 "이라고 설명했다. 그러나 저는 개인적으로 Loki (물론 표준 lib 디렉토리)와 같은 라이브러리의 이점으로이 (아주 작은) 비용을 훨씬 더 많이 차지한다고 생각합니다. – Athanase