스레드 풀을 사용하여 다중 스레드 병합 정렬을 작성하고 따라서 부스트 라이브러리를 다운로드하고 싶습니다. 나는 C++에 초보자이며 소스 코드 예제 프로그램을 어떻게 실행하는지 이해하는데 어려움이있다. 여기에서 내가 downlaoded ..에서 소스입니다 http://threadpool.sourceforge.net/ .... 그것은 다운로드 섹션에 있습니다 ... 어떤 도움을 주시면 감사하겠습니다.스레드 풀을 사용하여 부스트 라이브러리
1
A
답변
0
OpenMP는 자체 관리 스레드의 요구 사항에 더 나은 선택입니다. this overview에 포함 된 병합 정렬 예가 있습니다.
1
필자는 특정 스레드 풀 라이브러리 (b.t.w.는 Boost의 일부가 아닙니다)에 익숙하지 않지만 스레드 풀의 일반적인 개념은 매우 간단합니다. 클래스는 enqueue(std::function<void()> fn);
인터페이스와 같아야하며 원하는 함수 객체를 얻기 위해 함수를 래핑하는 것이 필요합니다. 일반적으로 std::bind
또는 람다 함수로 수행됩니다. 스레드 풀은 실행 가능한 스레드가있을 때까지 함수 객체를 대기열에 보관합니다. 그 시점에서 단순히 fn()
을 호출합니다. 병렬 정렬과 관련하여 병렬 처리를 위해 매우 잘 맞는 퀵 소트 버전을 작성할 수 있습니다. http://en.wikipedia.org/wiki/Quicksort
P.S. std::function
, 대응 std::bind
, 람다 함수는 C++ 0x의 일부이므로 Boost에서도 대용 물을 찾을 수 있습니다.
2
스레드를 관리하는 또 다른 도구는 TBB Intel Thread Building Blocks입니다. 이미 병합 정렬 구현이 있습니다. "tbb/parallel_sort.hpp" (그러나이 구현은 스레드 수에 관계없이 최소 O (n) 시간이 필요하므로 매우 효율적이지는 않습니다.)
관련 문제
- 1. FIFO에서 부스트 스레드 풀을 우선 변환 하시겠습니까?
- 2. java.util.concurrent 대 부스트 스레드 라이브러리
- 3. 스레드 풀을 사용한 멀티 스레딩
- 4. 스레드 풀을 사용하여 서버 프로그램 요청
- 5. 스레드 풀을 사용하여 백그라운드 스레드에서 예외 처리
- 6. Netty는 스레드 풀을 어떻게 사용합니까?
- 7. 부스트 스레드 누설 C++
- 8. 부스트 스레드 라이브러리를 컴파일하는 방법
- 9. 코코아 프로젝트에서 부스트 라이브러리 사용
- 10. 부스트 스레드 뮤텍스 배열
- 11. 커스텀 부스트 라이브러리 작성하기
- 12. 부스트 스레드 취소 중
- 13. 부스트 (v1.33.1) 스레드 인터럽트
- 14. NSOpenPanel에서 C++ 부스트 스레드
- 15. 차단 된 부스트 :: 스레드
- 16. 부스트 스레드 동기화
- 17. 부스트 :: 스레드 연결 오류가 OSX에서?
- 18. 건물 부스트 라이브러리
- 19. 부스트 직렬 라이브러리 업그레이드
- 20. RTTI 용 부스트 라이브러리
- 21. Monodevelop에서 부스트 라이브러리
- 22. 특정 부스트 라이브러리 컴파일
- 23. 부스트 라이브러리 경로
- 24. 부스트 C++ 라이브러리 설치
- 25. Java에서 다중 스레드 풀을 구현하는 방법
- 26. Java에서 LinkedBlockingQueue를 사용하여 스레드 풀을 만드는 방법은 무엇입니까?
- 27. AsyncCalls 유닛을 사용하여 스레드 풀을 생성 할 수 있습니까?
- 28. 부스트 스레드 - 인터럽트를 확인하는 방법
- 29. Snow Leopard에 부스트 라이브러리 설치
- 30. Workflow Invoke 메서드가 스레드 풀을 사용합니까?
무엇이 문제입니까? – ronag
병합 정렬의 스레드 된 버전은 여전히 표준 라이브러리에 포함 된 정렬보다 느릴 수 있습니다 (해당 정렬이 스레드되지는 않지만). 게다가 정렬은 이미 1 분 안에 수십억 개의 정수를 처리 할 수 있습니다 ... 스레딩은 정렬 알고리즘보다 높은 수준에서 수행하는 것이 좋습니다. (그러나 시도해도 좋습니다.)) –