- 博客(12)
- 资源 (14)
- 收藏
- 关注
原创 C++11多线程 互斥量与Windows临界区
1.Windows临界区Windows临界区与互斥量用法非常相似;但也有些差别在“同一个线程”(不同线程中会卡住等待)中, Windows中的“相同临界区变量”代表的临界区的进入(EnterCriticalSection)可以被多次调用,但是调用了几次EnterCriticalSection(),就得调用几次EnterCriticalSection()而在C++11中,std::mut...
2019-01-09 21:50:03 1763
原创 C++11 多线程std:: async与std::thread的区别
1. std::async与std::thread的区别std::async()与std::thread()最明显的不同,就是async并不一定创建新的线程std::thread() 如果系统资源紧张,那么可能创建线程失败,整个程序可能崩溃。std::thread()创建线程的方式,如果线程返回值,你想拿到这个值也不容易;std::async()创建异步任务,可能创建也可能不创建线...
2019-01-08 21:43:54 12880 1
原创 C++11多线程 原子操作概念及范例
互斥量:多线程编程中保护共享数据:先锁,操作共享数据,开锁大家可以把原子操作理解成一种:不需要用到互斥量加锁(无锁)技术的多线程并发编程方式;原子操作:是在多线程中不会被打断的程序片段;原子操作比互斥量更胜一筹;互斥量的加锁一般针对一个代码段,原子操作针对的一般都是一个变量,而不是一个代码段。原子操作,一般都是指“不可分割的操作”,也就是说这种操作状态要么是完成的,要么是没完成的,...
2019-01-08 21:03:26 814
原创 C++11 多线程 async、future、packaged_task、promise
1.std::async std::future创建后台任务并返回值目的:希望线程返回一个结果std::async是个函数模板,用来启动一个异步任务,启动起来一个异步任务。什么叫“启动一个异步任务”,就是自动创建一个线程并开始执行对应的线程入口函数,它返回一个std::future对象,这个std::future对象里面就含有线程函数返回的结果,我们可以通过调用std::future对象的...
2019-01-06 23:27:59 1317
原创 C++11多线程 条件变量condition_variable
1.条件变量std:: condition_variable、wait()、notify_one()std:: condition_variable实际上是个类,是一个与条件相关的类,说白了就是等待一个条件的达成。这个类是需要和互斥量来配合工作的,用的时候我们要生成这个类的对象。实例代码:线程A:等待一个条件满足线程B:专门往消息队列扔消息(数据)2.代码深思考视频教程,老...
2019-01-06 20:01:40 1753
原创 C++11单例设计模式共享数据分析
目录1.设计模式大概谈2.单例设计模式3.单例设计模式共享数据分析、解决4.std::call_once()1.设计模式大概谈“设计模式”:代码的一些写法(这些写法跟常规写法不怎么一样):程序灵活,维护起来可能很方便,但是别人接管、阅读代码都会很痛苦。用“设计模式”理念写出的代码很晦涩的。《head first》讲设计模式,可以了解一下。老外为应付特别大的项目的时候...
2019-01-06 12:04:02 1013 1
原创 C++11多线程 unique_lock详解
目录1.unique_lock取代lock_guard2. unique_lock的第二个参数2.1 std::adopt_lock2.2 std::try_to_lock2.3 std::defer_lock3. unique_lock的成员函数3.1 lock(),加锁3.2 unlock(),解锁3.3 try_lock()3.4 release()...
2019-01-06 09:07:15 78515 4
原创 C++11多线程 互斥量的概念、用法、死锁演示及解决详解
目录1.互斥量(mutex)的基本概念2.互斥量的用法2.1 lock()、unlock()2.2 std::lock_guard类模板3.死锁3.1 死锁演示3.2 死锁的一般解决方案3.3 std::lock()函数模板3.4 std::lock_guard()的std::adopt_lock参数1.互斥量(mutex)的基本概念保护共享数据,操作时...
2019-01-05 21:39:22 2163
原创 C++11多线程 创建多个线程、数据共享问题
目录1.创建和等待多个线程2.数据共享问题分析2.1 只读数据2.2 有读有写:3.共享数据的保护案例代码1.创建和等待多个线程a)多个线程执行顺序是乱的,跟操作系统内部对线程的运行调度机制有关;b)主线程等待所有子线程运行结束,最后主线程结束,推荐使用这种join的写法,更容易写出稳定的程序;c)咱们把thread对象放入到容器里管理,看起开像个thread对...
2019-01-05 15:39:16 2158
原创 C++11多线程 多线程传参详解
1.传递临时对象做线程参数1.1要避免的陷阱1用detach()时,如果主线程先结束,变量就会被回收;所以用detach()的话,不推荐用引用,同时绝对不能用指针。1.2要避免的陷阱2只要临时对象的用临时构造A类对象作为参数传递给线程,那么就一定能够在主线程结束之前,把线程函数的第二个参数构建出来,从而确保即便detach()子线程也安全运行,程序如下:#include<...
2019-01-05 13:48:25 4818 2
原创 C++11多线程 线程启动、结束、创建多线程方法
目录1、范例演示线程运行的开始和结束1.1 thread:标准库里的类1.2 join()1.3 detach()1.4 joinable()2.其他创建线程的方法2.1 用类对象(可调用对象),以及一个问题范例2.2 用lambda表达式1、范例演示线程运行的开始和结束程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;main()函数就是主线程,...
2019-01-04 21:30:16 8514 1
原创 C++11多线程 并发、进程、线程基本概念和综述
目录1、并发、线程、进程的概念1.1并发1.2可执行程序1.3进程1.4线程1.5学习心得二、并发的实现方法2.1多进程并发2.2多线程并发2.3总结三:C++11新标准线程库1、并发、线程、进程的概念1.1并发两个或者多个任务(独立的活动)同时发生:一个程序同时执行多个独立的任务;单核CPU的计算机在某一个时刻只能执行一个任务,由操作系...
2019-01-03 21:56:40 819
OpenCV 2 Computer Vision Application Programming Cookbook
2016-11-26
Swift 编程语言(中文版)
2016-04-16
基于Gabor+PCA+SVM的性别识别(2)
2015-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人