在Qt里面, 如果要创建一个线程似乎只能用QThread, 我觉得这样不太灵活.
1. 似乎要使用QThread, 只能新建一个类继承自QThread, 然后重写run方法.
但是问题是如果有许多需要多线程的功能,就会产生许多QThread的派生类, 而且这些类都是很相似的,只是run不同.
2. 使用的时候是用的QThread变量.
但是如果这样写:
QThread thread;
thread.start();
问题是thread的生命期马上就结束了, 程序会提示你"QThread: Destroyed while thread is still running", 然后过一会崩溃掉.
如果用new Thread()的话, 释放又需要很多额外的代码.
如果是把这个thread当作成员函数的话(C++ gui programming里14.1章这样做), 无法解决多次启动的问题.比如每隔5s要启动一次这个thread, 但是实际只有一个thread实例.
而windows api里的一个createThread(pFunc, param)的形式开启, 非常简单灵活,也没有生命周期问题.