溫馨提示×

linux c++多線程怎么寫

小樊
110
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女