在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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。