c++ concurrency in action 3.1cpp


#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;
}

猜你喜欢

转载自blog.csdn.net/fly1ng_duck/article/details/81083420