温馨提示×

linux c++多线程怎么写

小樊
81
2024-12-04 01:15:46
栏目: 编程语言

在 Linux 系统下,使用 C++ 编写多线程程序需要用到 C++11 标准中的 <thread>

#include <iostream>
#include <thread>
#include <vector>

// 函数示例:打印从 0 到 n-1 的整数
void print_numbers(int start, int end) {
    for (int i = start; i < end; ++i) {
        std::cout << "Thread ID: " << std::this_thread::get_id() << ", Number: "<< i << std::endl;
    }
}

int main() {
    const int num_threads = 4;
    const int range = 10;

    // 创建线程向量
    std::vector<std::thread> threads;

    // 计算每个线程需要处理的数字范围
    int range_per_thread = range / num_threads;

    // 为每个线程分配任务
    for (int i = 0; i < num_threads; ++i) {
        int start = i * range_per_thread;
        int end = (i == num_threads - 1) ? range : (i + 1) * range_per_thread;
        threads.push_back(std::thread(print_numbers, start, end));
    }

    // 等待所有线程完成
    for (auto& t : threads) {
        t.join();
    }

    std::cout << "All threads finished." << std::endl;

    return 0;
}

这个示例中,我们创建了一个名为 print_numbers 的函数,该函数接受两个参数:要打印的数字范围的起始值和结束值。在 main 函数中,我们创建了 4 个线程,并为每个线程分配了一个任务,使其打印从 0 到 9 的整数。最后,我们使用 join() 函数等待所有线程完成。

注意:在编译时,需要使用 -std=c++11 或更高版本的编译选项来启用 C++11 支持。例如,使用 g++ 编译器时,可以使用以下命令:

g++ -std=c++11 -pthread main.cpp -o main

这将生成一个名为 main 的可执行文件,可以运行它以查看多线程程序的效果。

0