Qthread 구현에 대한 질문
-
20-09-2019 - |
문제
qthread 객체는 단일 실행 스레드를 나타냅니다. 그러나 qthread 객체가 생성 될 때 또는 start()
메소드가 호출됩니까?
여러 qthread 객체를 놓을 수 있는지 여부에 관심이 있으며 OS는 스레드를 생성합니다. start()
그리고 그들을 죽여라 run()
반환 한 다음 Qthread 객체를 다시 재사용 할 수 있습니다. 그러나 Qthread 객체가 아무것도하지 않는 동안 OS 리소스를 유지하고 싶지 않습니다.
(기록을 위해, 나는 qtconcurrent와 qthreadpool을 알고 있으며,이 상황에서 내 요구를 충족시키지 못합니다)
해결책
Linux에서는 스레드 객체가 생성됩니다 ( pthread_create
) 시 QThread::start
방법. Windows와 동일하게 보입니다.
여기에서 소스를 볼 수 있습니다.
유닉스 : http://qt.gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_unix.cpp (라인 542).
Windows : http://qt.gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_win.cpp (라인 419).
제휴하지 않습니다 StackOverflow