執行緒是什麼意思和例子
執行緒(Thread)是多執行緒程式中的一條執行路徑。在多執行緒程式中,一個程式可以同時運行多個執行緒,這些執行緒可以同時運行不同的程式碼,並且可以同時訪問相同或不同的資料。
執行緒和程式之間的區別在於,程式是一個獨立的執行實體,它可以創建多個執行緒。而執行緒是程式的一部分,它可以訪問該程式所有的變數和函數。
舉例來說,假設我們有一個簡單的計算機程式,它可以進行加法、減法、乘法和除法運算。我們可以創建四個執行緒,每個執行緒負責一種運算。這樣,當用戶輸入一個運算時,相應的執行緒就會被啟動,並且可以同時進行其他的運算。
以下是一個簡單的C++程式,它創建了四個執行緒,每個執行緒負責一種運算:
#include <iostream>
#include <thread>
#include <vector>
#include <functional>
void add(int a, int b) {
std::cout << "Addition: " << a + b << std::endl;
}
void subtract(int a, int b) {
std::cout << "Subtraction: " << a - b << std::endl;
}
void multiply(int a, int b) {
std::cout << "Multiplication: " << a * b << std::endl;
}
void divide(int a, int b) {
std::cout << "Division: " << a / b << std::endl;
}
int main() {
std::vector<std::thread> threads;
for (int i = 0; i < 4; ++i) {
threads.emplace_back(
std::thread(
[i] {
std::cout << "Enter an operator (1-4): ";
int op;
std::cin >> op;
switch (op) {
case 1:
add(10, 5);
break;
case 2:
subtract(10, 5);
break;
case 3:
multiply(10, 5);
break;
case 4:
divide(10, 5);
break;
default:
std::cout << "Invalid operator!" << std::endl;
break;
}
}
)
);
}
for (auto& t : threads) {
t.join();
}
return 0;
}
這個程式創建了四個執行緒,每個執行緒負責一個運算。當程式運行時,它會要求用戶輸入一個操作符,然後相應的執行緒就會被啟動,並且可以同時進行其他的運算。