c++ concurrency in action 3.1cpp

本文演示了如何使用C++标准库中的`std::lock_guard`确保对全局`std::list`的安全并发访问,包括添加元素和检查元素是否存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


#include <list>
#include <mutex>
#include <algorithm>

std::list<int> some_list;//全局变量
std::mutex some_mutex;//一般是通过类设计,锁和data是private,而function成为成员函数,但是如果成员函数返回指向data的指针,就会造成后门

void add_to_list(int new_value)
{
	std::lock_guard<std::mutex> guard(some_mutex);//在下面list_contains两个 means they are mutually exclusive
	some_list.push_back(new_value);
}
bool list_contains(int value_to_find)
{
	std::lock_guard<std::mutex> guard(some_mutex);
	return std::find(some_list.begin(), some_list.end(), value_to_find)
		!= some_list.end();
}

#include <iostream>

int main()
{
	add_to_list(42);
	std::cout << "contains(1)=" << list_contains(1) << ", contains(42)=" << list_contains(42) << std::endl;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值