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