Linuxでの反発ロックの使用
#include
#include //
#include
#include
#include
// list some_mutex
std::list<int> some_list;
std::mutex some_mutex;
void add_to_list(int new_value)
{
// list_contains add_to_list
std::cout<<"add_to_list "<<std::endl;
std::lock_guard<std::mutex> guard(some_mutex);
some_list.push_back(new_value);
std::cout<<"add_to_list "<<std::endl;
}
bool list_contains(int value_to_find)
{
std::cout<<" "<<std::endl;
std::lock_guard<std::mutex> guard(some_mutex);
std::cout<<" "<<std::endl;
return std::find(some_list.begin(),some_list.end(),value_to_find) != some_list.end();
}
void add()
{
int i = 0;
while(1)
{
add_to_list(i);
i++;
}
}
int main()
{
std::thread t(add);
t.detach();
add_to_list(42);
std::cout<<"contains(42)="<42)<<", contains(42)="<42)<<std::endl;
return 0;
}
転載は出典を明記してください.http://blog.csdn.net/clh01s/article/details/74784584