QThread 对象代表单个执行线程。但是操作系统线程是在创建 QThread 对象时创建的,还是在start()
调用方法时创建的呢?
我感兴趣的是我是否可以有几个 QThread 对象,操作系统会在返回start()
后创建线程并杀死它们run()
,然后我可以再次重用 QThread 对象。但是我不想在 QThread 对象不做任何事情时持有操作系统资源。
(作为记录,我知道 QtConcurrent 和 QThreadPool,不,在这种情况下它们不能满足我的需求)
QThread 对象代表单个执行线程。但是操作系统线程是在创建 QThread 对象时创建的,还是在start()
调用方法时创建的呢?
我感兴趣的是我是否可以有几个 QThread 对象,操作系统会在返回start()
后创建线程并杀死它们run()
,然后我可以再次重用 QThread 对象。但是我不想在 QThread 对象不做任何事情时持有操作系统资源。
(作为记录,我知道 QtConcurrent 和 QThreadPool,不,在这种情况下它们不能满足我的需求)
在 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行)。