Qt QThread 的wait和join有什么区别
时间: 2023-12-13 07:05:52 浏览: 281
QT线程示例_QT_Qthread
Qt中的QThread类提供了wait()和wait(unsigned long time)方法,以及静态方法msleep(unsigned long msecs),它们都可以使当前线程阻塞一段时间,但wait()和join()的作用不同。
wait()是阻塞当前线程,直到另一个线程结束或调用quit()方法。也就是说,wait()会等待这个线程退出才会结束当前线程的阻塞,如果这个线程一直没有退出,那么wait()方法就会一直阻塞当前线程。wait()方法不会销毁线程对象,仅仅是等待线程退出。
join()是让当前线程等待另一个线程的结束。与wait()不同的是,join()并不会阻塞当前线程,而是会使当前线程等待另一个线程执行完毕后再继续执行。在Qt中,join()方法可以通过QThread::currentThread()调用。join()方法会销毁线程对象,也就是说,一旦线程结束,它就会被销毁。
需要注意的是,如果一个线程被调用了wait()方法,那么它就不能再被调用start()方法启动,否则会抛出一个QThread::IllegalOperation异常。
阅读全文