您好,登錄后才能下訂單哦!
在C++中,可以使用標準庫中的std::hash
來處理哈希算法
#include <iostream>
#include <functional>
#include <thread>
#include <vector>
#include <mutex>
std::mutex mtx;
void hash_data(const std::string& data, std::size_t& hash_value) {
std::hash<std::string> hasher;
hash_value = hasher(data);
}
int main() {
const std::vector<std::string> data_list = {"hello", "world", "cpp", "concurrency"};
std::vector<std::size_t> hash_values(data_list.size());
std::vector<std::thread> threads;
for (size_t i = 0; i < data_list.size(); ++i) {
threads.emplace_back(hash_data, std::ref(data_list[i]), std::ref(hash_values[i]));
}
for (auto& t : threads) {
t.join();
}
for (size_t i = 0; i < hash_values.size(); ++i) {
std::unique_lock<std::mutex> lock(mtx);
std::cout << "Data: " << data_list[i] << ", Hash: " << hash_values[i] << std::endl;
lock.unlock();
}
return 0;
}
在這個示例中,我們創建了一個hash_data
函數,它接受一個字符串引用和一個哈希值引用。我們使用std::hash<std::string>
來計算字符串的哈希值。
在main
函數中,我們創建了一個包含字符串的data_list
和一個用于存儲哈希值的hash_values
向量。然后,我們創建了一個線程池,并為每個數據項分配一個線程來計算其哈希值。最后,我們等待所有線程完成,并輸出結果。
注意,我們在輸出哈希值時使用了互斥鎖mtx
來確保線程安全。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。