zoukankan      html  css  js  c++  java
  • std::lock_guard

    /*
    std::lock_guard:更方便线程对于互斥量的上锁操作
    std::lock_guard:在定义一个lock_guard时上锁,保证在析构或者异常时解锁
    */
    #include <iostream>       // std::cout
    #include <thread>         // std::thread
    #include <mutex>          // std::mutex, std::lock_guard
    #include <stdexcept>      // std::logic_error
    
    std::mutex mtx;
    
    void print_even (int x) {
        if (x%2==0) std::cout << x << " is even
    ";
        else throw (std::logic_error("not even"));
    }
    
    void print_thread_id (int id) {
        try {
            // using a local lock_guard to lock mtx guarantees unlocking on destruction / exception:
            std::lock_guard<std::mutex> lck (mtx);//对mtx上锁,保证在析构时解锁
            print_even(id);
        }
        catch (std::logic_error&) {
            std::cout << "[exception caught]
    ";
        }
    }
    
    int main ()
    {
        std::thread threads[10];
        // spawn 10 threads:
        for (int i=0; i<10; ++i)
            threads[i] = std::thread(print_thread_id,i+1);
    
        for (auto& th : threads) th.join();
        getchar();
        return 0;
    }

    具体可看http://www.cnblogs.com/haippy/p/3237213.html

  • 相关阅读:
    QT中的列表容器
    QT中的Buttons
    QT中的常用控件
    [机房测试]弟娃
    CF1580C Train Maintenance
    [机房测试]数据恢复
    Sentry 监控
    Sentry 监控
    Sentry 监控
    Sentry 后端监控
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/3672314.html
Copyright © 2011-2022 走看看