国美网站建设的目的,ps怎么做网页设计,wordpress音乐墙,定制软件开发报价在使用线程的时候#xff0c;不仅要关注线程开启的时机#xff0c;同时还要关注线程安全退出#xff0c;这样才能保证程序的健壮性#xff0c;如果线程开启的较多#xff0c;且开启关闭比较频繁#xff0c;建议使用线程池来处理。开启线程有三种方式#xff1a;第一种C的…在使用线程的时候不仅要关注线程开启的时机同时还要关注线程安全退出这样才能保证程序的健壮性如果线程开启的较多且开启关闭比较频繁建议使用线程池来处理。开启线程有三种方式第一种C的开线程方式第二种自定义一个继承自QObject的类把要处理的事情放在这个类中实现然后再new一个QThread指定把这个类通过moveToThread移动到指定的线程中进行处理第三种也就是我们这里重点分析的一种自定义一个类继承自QThread然后重写run函数把要处理的事项放在run函数中。
1新建一个C类并继承自QThread 2输入线程类的名称并勾选图中所示内容点击下一步点击完成即可 3在添加的线程类中.h文件中添加run函数用于重写 4在线程类的cpp文件中在run()中添加要处理的逻辑业务 5子线程只能处理数据不能直接在子线程操作界面否则会崩溃如果想要操作界面需要将子线程的数据传递给界面主线程进行操作这样就用到了我们信号和槽子线程和主线程之间传递参数。子线程和主线程之间传递数据
1首先在主界面的头文件中添加线程对象
#includeusbthread.h和usbThread myusbThread; 2 在主界面的cpp文件中添加信号和槽连接这里用到自定义信号在子线程的头文件中定义你要传递的数据这里使用的自定义结构体信号stru_usb_data参数是结构体形式。
signals:void send_usbFlagSignal(stru_usb_data usb_data); 3 在界面主线程中的构造函数中开启线程也可以根据自己的需要开启线程比如点击按钮时开启或者接收到信号触发时开启这个根据用户自己的需求来定并且 在子线程的cpp文件中通过emit函数发送该信号 4 在子线程的cpp文件中通过emit函数发送该信号 5 在主界面cpp文件中连接信号和槽用于接收子线程传递过来的数据这里的信号是自定义的信号参数是非基本类型所以需要对信号进行注册。于是就实现了一个界面主线程一个数据处理线程子线程提供数据通过信号和槽传递给界面主线程界面主线程对接收到的数据进行处理。 6线程运行完毕需要安全退出线程异常退出有可能导致崩溃这里安全退出有两种方式一种是标志位一种是通过检查线程运行状态通过quitwait来实现这里我们用第二种方式退出线程。