QThread对象表示单个执行线程。但是在创建QThread对象时,或者在调用start()
方法时是否创建了OS线程?
我对是否可以放置几个QThread对象感兴趣,操作系统将在start()
上创建线程并在run()
返回后终止它们,然后我可以再次重用QThread对象。但我不想在QThread对象没有做任何事情时保留OS资源。
(为了记录,我知道QtConcurrent和QThreadPool,不,他们在这种情况下不能满足我的需求)
答案 0 :(得分:6)
在Linux中,在pthread_create
方法期间创建了线程对象(通过QThread::start
)。它与Windows看起来大致相同。
您可以在此处查看来源:
Unix: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行)。