Hash算法在C++中的并发处理

发布时间:2024-11-20 11:07:29 作者:小樊
来源:亿速云 阅读:79

在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来确保线程安全。

推荐阅读:
  1. C++中tostring用法揭秘
  2. tostring函数如何转换C++数值

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:C++中Hash表与红黑树选择

下一篇:C++ STL Hash表使用注意事项

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》