2014-03-19 2 views
0

멀티 코어 아키텍처에서 수행해야 할 작업은 비교적 짧습니다. 고정 크기 스레드 풀과 실행 프로그램의 안정적인 구현을 원했습니다.boost :: asio :: io_service를 사용하여 C++ 11 스레드간에 작업을 디스패치하는 방법

나는이 게시물 How to create a thread pool using boost in C++?에서 boost :: asio와 io_service에 대해 읽었지만 많은 부분에서 내 코드는 성능상의 이유로() 성능 향상을 위해 로컬 변수에 대해 + + 11 thread_local 수정자를 사용한다. 나는 C++ 11 쓰레드를 사용해야한다.

부스트 스레드 구현이 C++ 11 thread_local 변수와 호환됩니까?

boost :: thread 대신에? + 11 스레드로 io_service :: run 메소드를 사용하는 것이 안전합니까?

+0

스레드 지역 주민을 사용하는 경우는 무관해야 그냥이다. 스레드 지역 주민. Boost는 구현이 올바른 한 지원할 필요가 없습니다. – sehe

답변

3

boost :: thread 대신에? + 11 스레드로 io_service :: run 메소드를 사용하는 것이 안전합니까?

예, std::threadboost::asio과 함께 사용하면 정상적으로 작동합니다. 또한 boost::bind 대신 std::bind을 사용합니다. 예를 찾을 수 있습니다 here

부스트 스레드 구현이 C++ 11 thread_local 변수와 호환됩니까?

나는 그것에 대해 잘 모르지만, 당신이 std::thread

+0

나는 io_service :: stop()이 어떻게 동작 하는지를 알았을 때 화가 났던 순간을 보았지만 실제로 테스트를 해 보았습니다. –

관련 문제