亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++解壓多文件并行處理

發布時間:2024-10-30 11:58:25 來源:億速云 閱讀:81 作者:小樊 欄目:編程語言

在C++中,要實現多文件并行處理,可以使用多線程(例如,使用C++11的std::thread庫)

#include <iostream>
#include <vector>
#include <thread>
#include <mutex>
#include <queue>
#include <condition_variable>

std::mutex mtx;
std::condition_variable cv;
std::queue<std::string> file_queue;
bool done = false;

void extract_file(const std::string& file_path) {
    // 在這里實現文件解壓邏輯
    std::cout << "Extracting " << file_path << std::endl;

    // 模擬解壓過程
    std::this_thread::sleep_for(std::chrono::seconds(2));

    std::unique_lock<std::mutex> lock(mtx);
    file_queue.pop();
    cv.notify_one();
}

int main() {
    // 要解壓的文件列表
    std::vector<std::string> file_list = {"file1.zip", "file2.zip", "file3.zip"};

    // 將文件添加到隊列中
    for (const auto& file : file_list) {
        file_queue.push(file);
    }

    // 創建線程并啟動
    int num_threads = std::thread::hardware_concurrency();
    std::vector<std::thread> threads;
    for (int i = 0; i < num_threads; ++i) {
        threads.emplace_back(extract_file, "");
    }

    // 等待所有線程完成
    std::unique_lock<std::mutex> lock(mtx);
    while (!file_queue.empty() || !done) {
        cv.wait(lock);
    }

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

    std::cout << "All files extracted." << std::endl;

    return 0;
}

在這個示例中,我們首先創建了一個文件隊列,將要解壓的文件添加到隊列中。然后,我們創建了與硬件并發線程數相等的線程,并將它們分配給extract_file函數。extract_file函數從隊列中獲取文件并執行解壓操作。我們還使用了互斥鎖和條件變量來確保在任何時候只有一個線程可以訪問文件隊列。

當所有文件都從隊列中取出并且解壓完成后,主線程將等待所有工作線程結束。最后,程序輸出“All files extracted.”表示所有文件已成功解壓。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

兰州市| 安顺市| 江孜县| 沧源| 邵阳县| 铁岭市| 苍南县| 辽中县| 商都县| 乐亭县| 汉源县| 祁东县| 桓台县| 乐清市| 定襄县| 平遥县| 临高县| 正镶白旗| 垫江县| 昌吉市| 大同县| 青冈县| 龙海市| 祁东县| 永嘉县| 禹城市| 建宁县| 南江县| 南城县| 肥乡县| 确山县| 鄂尔多斯市| 寻乌县| 米脂县| 烟台市| 博客| 高密市| 绥中县| 来凤县| 海宁市| 攀枝花市|