執行緒是什麼意思和例子

執行緒(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;
}

這個程式創建了四個執行緒,每個執行緒負責一個運算。當程式運行時,它會要求用戶輸入一個操作符,然後相應的執行緒就會被啟動,並且可以同時進行其他的運算。