如何在C++中使用set集合进行多线程操作

1949idc 2年前 (2024-09-18) 阅读数 317 #编程语言

在C++中,std::set 是一个关联容器,它包含一组唯一的对象

以下是一个简单的示例,展示了如何在C++中使用 std::set 和多线程:

#include<iostream>
#include <set>
#include<thread>
#include <mutex>

std::set<int> my_set;
std::mutex mtx;

void insert_numbers(int start, int end) {
    for (int i = start; i <= end; ++i) {
        std::unique_lock<std::mutex> lock(mtx);
        my_set.insert(i);
        lock.unlock();
    }
}

int main() {
    std::thread t1(insert_numbers, 1, 100);
    std::thread t2(insert_numbers, 101, 200);

    t1.join();
    t2.join();

    for (const auto& num : my_set) {
        std::cout<< num << " ";
    }
    std::cout<< std::endl;

    return 0;
}

在这个示例中,我们创建了两个线程,每个线程都会向 my_set 插入一系列数字。为了确保线程安全,我们使用了互斥锁(std::mutex)来保护对 std::set 的访问。当一个线程持有锁时,其他线程必须等待,直到锁被释放。

注意:虽然这个示例展示了如何在多线程环境中使用 std::set,但在实际应用中,你可能需要根据具体需求选择更高效的并发数据结构或同步机制。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业