Advertisement

How to use lock_guard in C++

阅读量:

mutex01.cpp

复制代码
    #include <iostream>
    #include <array>
    #include <limits>
    #include <set>
    #include <unordered_map>
    
    #include <functional>
    #include <memory>
    #include <ostream>
    #include <string>
    #include <vector>
    #include <map>
    #include <optional>
    #include <optional>
    
    #include <chrono>
    #include <mutex>
    #include <thread>
    
    
    std::map<std::string, std::string> g_pages;
    std::mutex g_pages_mutex;
    
    
    void save_page(const std::string& url,const std::string& content)
    {
      std::cout << "save:"<<url<<std::endl;
    // simulate a long page fetch
    std::this_thread::sleep_for(std::chrono::seconds(0));
    // std::string result = "fake content";
    
    
     
    std::lock_guard<std::mutex> guard(g_pages_mutex);
    g_pages[url] = content;
      std::cout << "save:"<<url<<" ok"<<std::endl;
    }
    
    int main() {
    std::thread t1(save_page, "http://foo","content 1");
    std::thread t2(save_page, "http://bar","content 2");
    t1.join();
    t2.join();
    
    
    for(auto item: g_pages){
       std::cout << "save:"<<item.second<<std::endl;
    }
    
    
    return 0;
    }

mutex01.cpp

复制代码
    g++ mutex01.cpp     -lpthread   -o  a    ;./a

全部评论 (0)

还没有任何评论哟~