
C++多线程
文章平均质量分 51
一生只爱何
这个作者很懒,什么都没留下…
展开
-
C++多线程学习笔记11(WINDOWS临界区、自动析构技术、recursive_mutex 递归的独占互斥量、带超时功能的独占互斥量 std::timed_mutex)
1.WINDOWS临界区同一个线程中,windows"相同临界区变量代表临界区"的进入EnterCriticalSection(&my_winsec) 和LeaveCriticalSection(&my_winsec);成对出现;可以多次进入同一线程,lock() 同一个互斥量多次,报异常// 线程6.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<thread>#include<iostream>原创 2022-01-19 15:55:00 · 543 阅读 · 0 评论 -
C++多线程学习笔记10(std::atomic,std::async 补充)
一、std::atomic一般atomic原子操作,针对 ++、–,+=,&=,|= ,~= 是支持的,其他可能不支持// 线程9.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<thread>#include<iostream>using namespace std;#include<future>std::atomic<int> g_mycount = 0;//定义一个全局变原创 2022-01-19 14:49:21 · 561 阅读 · 0 评论 -
C++多线程学习笔记09(std::future、std::shared_future、std::atomic原子操作)
原创 2022-01-17 15:22:17 · 640 阅读 · 0 评论 -
C++多线程学习笔记08(future 、packaged_task 、promise)
一:std::async std::future 创建后台任务,并返回值希望线程返回一个结果std::async 是一个函数模板,用来启动一个异步任务;之后返回一个std::future对象,是个类模板。“启动一个异步任务”,自动创建一个线程并开始执行对应的线程入口函数,返回std::future对象,里面含有线程入口函数所返回的结果。使用get()函数获取。参数:1)std::launch::deferred 表示线程入口函数调用被延迟到std::future 的 wait()或者 get()原创 2022-01-16 14:37:50 · 457 阅读 · 0 评论 -
C++多线程学习笔记07(条件变量)
原创 2022-01-15 15:55:40 · 617 阅读 · 0 评论 -
C++多线程学习笔记06(单例设计模式)
原创 2022-01-15 15:23:03 · 145 阅读 · 0 评论 -
C++多线程学习笔记05(unique_lock )
unique_lock学习使用unique_lock 取代 lock_guardunique_lock是个类模板,一般情况lock_guard满足需求,lock_guard取代mutex的lock()和unlock()。但是unique_lock要比lock_guard灵活的多,但内存占用多,效率差点。unique_lock的第二个参数2.1 std::lock_guardstd::mutex sbguard(my_tuex,std::adopt_lock); //adopt_lock原创 2022-01-15 14:12:57 · 364 阅读 · 0 评论 -
C++多线程学习笔记04(多线程创建、等待、数据共享,互锁)
一.创建和等待多个线程总结:(1)执行顺序是乱的,跟操作系统内部对线程的运行调度机制有关(2)主线程等待子线程结束,最后主线程结束(3)将thread对象放入容器中,对创建大量的线程管理方便void myprint(int inum){ cout << "myprint线程开始执行,编号 = "<<inum << endl; cout << "myprint线程结束执行,编号 = " << inum << endl;}原创 2022-01-14 18:03:23 · 674 阅读 · 0 评论 -
C++多线程学习笔记03(线程参数)
线程参数的研究1.传递临时对象作为线程参数(1)在创建线程的同时,构造临时对象的方法传递参数是可行的(2)传递int简单类型参数,建议都是值传递,不要引用。(3)传递类对象,避免隐式类型转换,全部在创建线程时构建出临时对象,然后在函数参数里,使用引用,否则系统会再次构造一次对象。(4)建议不适用detach(),只是用join();2.线程ID不同线程,线程ID不同 可以获取线程ID std::this_thread::get_id()3.传递类对象,智能指针作为线程参数4.用成员函数指原创 2022-01-14 14:34:14 · 432 阅读 · 0 评论 -
C++多线程学习笔记02(创建线程)
1.包含头文件 thread主程序从main()开始执行,进程是否完毕标志是 主线程 是否完毕所以一般情况:想保持子线程运行状态,主线程要一直保持运行。创建线程:1.函数thread mytobj(myprint); // 创建线程 myprint可调用对象2.类对象TA ta;thread mytoj1(ta);3.lambda表达式auto mylambda = [] {cout << “我的线程开始” << endl;cout <<原创 2022-01-14 13:45:04 · 210 阅读 · 0 评论 -
C++多线程学习笔记01(概念)
这里写自定义目录标题生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入```cpp在这里插入代码片# 欢迎使用Markdown编辑器你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。原创 2022-01-14 13:17:46 · 135 阅读 · 0 评论