2010-11-10 4 views
8

빠른 질문이 있습니다. 나는 다중 센서로부터 데이터를 얻기위한 작은 다중 스레드 프로그램을 만들고 pthreads와 qthreads에 대한 지식을 가지고있다. 두 라이브러리에 액세스 할 수 있습니다. 개인적으로 나는 디자인과 다양한 기능 때문에 Qt를 사용하는쪽으로 편향되어있다. 그러나 다른 하나를 사용하는 것에 상당한 이점이 있습니까? 감사합니다.QThreads 대 Pthreads

답변

8

QThread는 pthreads를 기반으로합니다. 객체 지향 추상화를 제공하므로 스레드로 작업하기가 더 쉽습니다. QThreads는 이식 가능하고, 기본 스레드 시스템을 사용하는 모든 시스템에서 실행될 수 있으며, pthread는 POSIX 시스템에만 적용됩니다.

QThreads를 사용할 때의 유일한 단점은 응용 프로그램을 Qt와 연결해야한다는 것입니다. 이 의존성으로 인해 응용 프로그램을 배포하기가 다소 어려워 질 수 있습니다.

+0

예 ... 저는 단지 그것을보고 있었고 내부적으로 어떻게 이루어 졌는지 보입니다. 고마워요. 실제로 tryLock()이 pthread_mutex_trylock을 사용하여 구현되었는지 여부를 구체적으로 찾고있었습니다. 나는 그것이 어떻게인지 생각한다. – blueskin

+2

유일한 배포판 문제는 Qt 라이브러리에 동적으로 링크 할 때 코드와 함께 LGPL 라이선스를 포함해야한다는 것입니다 (이것은 공개 소스 버전과 상용 소스 버전을 사용하고 있다고 가정합니다). 창에서 어떤 DLL을 배포 할 것인지 inorder가 필요한지 확실하지 않으면'depends.exe'를 사용하면 정확하게 알려줍니다! http://www.dependencywalker.com/ – g19fanatic

2

리눅스의 QThreadpthread을 사용합니다. Windows 측에 어떤 것이 있는지 잘 모르겠습니다. QThread과 함께 사용할 수없는 특정 pthread API 함수가있는 경우가 아니면 QThread을 그대로 사용하여 전달할 수있는 이점을 얻습니다. 중요한 성능 차이가있을 것으로 기대하지는 않습니다. Qthread을 사용하면 스레드 경계에서 신호/슬롯 메커니즘을 사용할 수도 있습니다.

4

하지만 QThread가 이벤트 루프를 사용하여 관리해야하므로 pthread와 같은 스레드를 죽일 수는 없습니다. 쓰래드가 오랫동안 열심히 일한다면, 쓰레드가 풀리지 않으면 멈출 수 없습니다. 어떤 경우에는 중요합니다.