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

溫馨提示×

溫馨提示×

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

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

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

崇州市| 怀安县| 中卫市| 正定县| 平山县| 永登县| 门头沟区| 双江| 赞皇县| 东台市| 德昌县| 长岭县| 莎车县| 丰原市| 惠安县| 老河口市| 防城港市| 河东区| 息烽县| 鄯善县| 元氏县| 伊通| 兴仁县| 增城市| 太和县| 浦江县| 介休市| 临桂县| 韶山市| 广州市| 宝兴县| 清水县| 彭山县| 内丘县| 临汾市| 永宁县| 丰宁| 海原县| 常德市| 习水县| 蓬莱市|