在Linux上使用C++進行多線程編程,可以使用C++11標準中的<thread>庫
#include <iostream>
#include <thread>
#include <vector>
// 函數將在多個線程中運行
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 numbers_per_thread = 10;
// 創建一個線程向量
std::vector<std::thread> threads;
// 計算每個線程需要打印的數字范圍
int range = numbers_per_thread / num_threads;
// 為每個線程分配一個數字范圍
for (int i = 0; i < num_threads; ++i) {
int start = i * range + 1;
int end = (i == num_threads - 1) ? numbers_per_thread : (i + 1) * range;
threads.emplace_back(print_numbers, start, end);
}
// 等待所有線程完成
for (auto& t : threads) {
t.join();
}
std::cout << "All threads finished." << std::endl;
return 0;
}
這個示例中,我們創建了一個名為print_numbers的函數,它接受兩個參數:要打印的數字范圍的起始值和結束值。在main函數中,我們創建了4個線程,并為每個線程分配了一個數字范圍。然后,我們使用join()函數等待所有線程完成。
編譯并運行此程序時,您將看到每個線程打印其分配的數字范圍。