zoukankan      html  css  js  c++  java
  • C++11新特性

    1、多线程

        std::thread

            C++11之前链接需要-lpthread,之后引入多线程,不再需要第三方库。

            函数指针、类函数指针、函数对象、lambda表达式作为线程函数传入std::thread构造示例后,线程立刻开始执行。

            存储参数类似std::bind(),但是不同于std::function,std::thread的参数被拷贝构造在栈上(即使是引用也需要)

            线程对象:不能复制、可以移动(底层的线程本身执行行为不受影响)

            线程互斥使用共享资源的程序段称为临界区,需要加锁控制同一时间段只能有一个线程可以进入。

           线程之间相互等待称为线程同步。

        std::mutex

            不允许拷贝或移动构造;lock,unlock,try_lock
        std::recursive_mutex
            递归锁/可重入锁:允许同一个线程对一个互斥量多次上锁,解锁需要相同次数的unlock
        std::timed_mutex
            try_lock_for:指定时间段,超时返回false
            try_lock_util:指定时间点,超时返回false
        std::recursive_timed_mutex
            递归锁/可重入锁:允许同一个线程对一个互斥量多次上锁,解锁需要相同次数的unlock
        std::shared_mutex
            lock():排他锁,解锁需要相同次数的unlock
            shared_lock():共享锁,可被多个线程获得
        std::lock_guard(RAII)
            std::mutex m;

            std::lock_guard<std::mutex> lk(m); //不用手动释放锁,为什么可以拷贝m?

        std::unique_lock
            比std::lock_guard具有更多的功能:延迟锁定、递归锁定、所有权转移、条件变量,性能较低

     2、

  • 相关阅读:
    [NOIP模拟赛][贪心]奶牛晒衣服.
    BZOJ3750: [POI2015]Piecz
    BZOJ2348 [Baltic 2011]Plagiarism
    高精度乘法【高乘高
    codevs 1215 迷宫
    变量交换
    a+b问题与圆柱体表面积的计算
    算数表达式的练习
    [bzoj1070][SCOI2007]修车[ 网络流]
    [bzoj2502]清理雪道[上下界网络流]
  • 原文地址:https://www.cnblogs.com/yyqng/p/15489018.html
Copyright © 2011-2022 走看看