• Qt中简单的并发方式QtConcurrent::run() 方法


    QtConcurrent::run() 方法可以用于在后台线程中执行函数或成员函数。它是 Qt 提供的一种简单的并发执行方式,可以方便地在多个线程中执行耗时的任务,而无需手动管理线程的创建和销毁。

    使用 QtConcurrent::run() 方法的一般步骤如下:

    1. 定义一个函数或成员函数,用于执行需要在后台线程中执行的任务。

    2. 在需要执行任务的地方调用 QtConcurrent::run() 方法,传递函数或成员函数的指针作为参数。

    3. 如果需要获取任务的结果,可以使用 QFuture 类来获取异步操作的结果。

    下面是一个简单的示例,演示了如何使用 QtConcurrent::run() 方法:

    #include 
    
    // 定义一个函数,用于执行后台任务
    void performTask()
    {
        // 执行耗时任务,比如文件读写、网络请求等
        // ...
    }
    
    int main(int argc, char *argv[])
    {
        QCoreApplication app(argc, argv);
    
        // 在后台线程中执行任务
        QFuture<void> future = QtConcurrent::run(performTask);
    
        // 等待任务完成
        future.waitForFinished();
    
        // 任务完成后的处理
        // ...
    
        return app.exec();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    在上述示例中,我们定义了一个函数 performTask(),用于执行后台任务。然后,在 main() 函数中,我们使用 QtConcurrent::run() 方法来在后台线程中执行任务。QFuture 对象 future 用于获取异步操作的结果,我们可以使用 waitForFinished() 方法等待任务完成。在任务完成后,可以进行相应的处理。

    需要注意的是,QtConcurrent::run() 方法会自动选择一个合适的线程池来执行任务,并在任务完成后自动销毁线程。这样可以避免手动管理线程的复杂性。

  • 相关阅读:
    【PAT甲级 - C++题解】1116 Come on! Let‘s C
    React Native 开发常见问题及注意事项
    进制转换器
    java扩展jmeter依赖
    STM32 APP跳转到Bootloader
    6-1 CCat类的静态数据【武汉理工大学】
    gpt不能发送信息了?
    iTOP-RK3588开发板体验RKNN_DEMO
    联想小新 win10电脑系统安装教程
    .NET轻松实现支付宝服务窗网页授权并获取用户相关信息
  • 原文地址:https://blog.csdn.net/qq_40089560/article/details/134511040