关于QThread实施的问题

时间:2010-02-15 21:20:48

标签: multithreading qt qthread

QThread对象表示单个执行线程。但是在创建QThread对象时,或者在调用start()方法时是否创建了OS线程?

我对是否可以放置几个QThread对象感兴趣,操作系统将在start()上创建线程并在run()返回后终止它们,然后我可以再次重用QThread对象。但我不想在QThread对象没有做任何事情时保留OS资源。

(为了记录,我知道QtConcurrent和QThreadPool,不,他们在这种情况下不能满足我的需求)

1 个答案:

答案 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行)。