温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++多线程在Linux下的应用实例

发布时间:2024-11-15 16:54:05 来源:亿速云 阅读:80 作者:小樊 栏目:编程语言

在Linux下,C++多线程的应用实例非常广泛,包括服务器程序、图形界面程序、并发处理任务等。下面是一个简单的C++多线程应用实例,使用C++11标准库中的<thread>头文件来实现两个线程并发执行任务。

示例代码

#include <iostream>
#include <thread>
#include <mutex>

std::mutex mtx; // 创建互斥锁

// 共享数据
int sum = 0;
int diff = 0;
int prod = 1;
double quotient = 1;

// 线程函数
void add(int a, int b) {
    std::unique_lock<std::mutex> lock(mtx); // 加锁
    sum = a + b;
    lock.unlock(); // 解锁
}

void subtract(int a, int b) {
    std::unique_lock<std::mutex> lock(mtx); // 加锁
    diff = a - b;
    lock.unlock(); // 解锁
}

void multiply(int a, int b) {
    std::unique_lock<std::mutex> lock(mtx); // 加锁
    prod = a * b;
    lock.unlock(); // 解锁
}

void divide(double a, double b) {
    std::unique_lock<std::mutex> lock(mtx); // 加锁
    if (b != 0) {
        quotient = a / b;
    } else {
        quotient = 0; // 防止除以零
    }
    lock.unlock(); // 解锁
}

int main() {
    int a = 10;
    int b = 2;

    // 创建线程
    std::thread addThread(add, a, b);
    std::thread subtractThread(subtract, a, b);
    std::thread multiplyThread(multiply, a, b);
    std::thread divideThread(divide, a, b);

    // 等待线程完成
    addThread.join();
    subtractThread.join();
    multiplyThread.join();
    divideThread.join();

    // 输出结果
    std::cout << "加法结果: " << sum << std::endl;
    std::cout << "减法结果: " << diff << std::endl;
    std::cout << "乘法结果: " << prod << std::endl;
    std::cout << "除法结果: " << quotient << std::endl;

    return 0;
}

代码解释

  1. 头文件包含

    • #include <iostream>:用于输入输出操作。
    • #include <thread>:用于创建和管理线程。
    • #include <mutex>:用于同步访问共享数据。
  2. 全局变量

    • sumdiffprodquotient:共享数据,用于存储加法、减法、乘法和除法的结果。
    • mtx:互斥锁,用于保护共享数据的访问。
  3. 线程函数

    • addsubtractmultiplydivide:分别实现加法、减法、乘法和除法运算。每个函数内部使用std::unique_lock对互斥锁进行加锁和解锁,以确保同一时间只有一个线程可以访问共享数据。
  4. 主函数

    • 定义两个整数ab
    • 创建四个线程,分别执行加法、减法、乘法和除法运算。
    • 使用join方法等待所有线程完成。
    • 输出各个运算的结果。

编译和运行

确保你的系统已经安装了C++11或更高版本的编译器,例如g++。然后可以使用以下命令编译和运行代码:

g++ -std=c++11 -pthread -o multi_thread_example multi_thread_example.cpp
./multi_thread_example

运行后,你将看到加法、减法、乘法和除法的结果输出到控制台。

这个示例展示了如何在Linux下使用C++多线程来并发执行任务,并通过互斥锁保护共享数据的访问。你可以根据实际需求扩展这个示例,实现更复杂的多线程应用。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI