91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++怎樣利用_beginthreadex實現線程同步

c++
小樊
82
2024-10-09 19:23:15
欄目: 編程語言

在C++中,使用_beginthreadex函數創建一個新線程,并通過使用互斥對象(mutex)來實現線程同步。互斥對象可以確保多個線程不會同時訪問共享資源,從而避免數據競爭和不一致問題。

下面是一個簡單的示例,展示了如何使用_beginthreadex和互斥對象實現線程同步:

#include <iostream>
#include <thread>
#include <mutex>

std::mutex mtx; // 全局互斥對象
int shared_data = 0; // 共享資源

void thread_function() {
    for (int i = 0; i < 100000; ++i) {
        std::unique_lock<std::mutex> lock(mtx); // 加鎖
        ++shared_data; // 修改共享資源
        lock.unlock(); // 解鎖
    }
}

int main() {
    const int num_threads = 4;
    std::thread threads[num_threads];

    // 創建多個線程
    for (int i = 0; i < num_threads; ++i) {
        threads[i] = std::thread(thread_function);
    }

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

    std::cout << "Shared data: " << shared_data << std::endl; // 輸出共享資源的值

    return 0;
}

在上面的示例中,我們創建了一個全局互斥對象mtx和一個共享資源shared_data。然后,我們定義了一個線程函數thread_function,該函數使用互斥對象來保護對共享資源的訪問。在main函數中,我們創建了多個線程,并等待它們完成。最后,我們輸出共享資源的值,以驗證所有線程都已成功修改了它。

請注意,在上面的示例中,我們在修改共享資源之前使用std::unique_lock對象對互斥對象進行加鎖,并在修改完成后解鎖。這樣可以確保同一時間只有一個線程能夠訪問共享資源,從而實現線程同步。

0
岳西县| 伊宁县| 怀仁县| 拜城县| 南开区| 宁晋县| 高阳县| 贵阳市| 灵宝市| 武邑县| 拜城县| 星子县| 河曲县| 云梦县| 五寨县| 治县。| 娱乐| 松江区| 阿合奇县| 新邵县| 措美县| 额尔古纳市| 大港区| 黄骅市| 灵丘县| 和林格尔县| 宜都市| 广饶县| 分宜县| 四子王旗| 洮南市| 元谋县| 江安县| 河北省| 兴业县| 天峨县| 修水县| 蚌埠市| 三江| 安福县| 搜索|