C++
文章平均质量分 71
知乎知否
这个作者很懒,什么都没留下…
展开
-
VS通过编译控制实现功能控制
vs通过控制编译模式来实现功能的控制原创 2023-09-20 17:12:30 · 99 阅读 · 0 评论 -
c++线程异步通信
使用到的模板std::async()std::future()std::async()是一个函数模板,用来启动一个异步线程,std::future是std::future返回的一个对象。其中std::future对象中包含线程入口函数锁返回的结果,可以调用std::future的成员函数get()获取结果。使用到的头文件#include<future>实际使用#include <iostream>#include <future>#include &原创 2022-01-14 15:35:28 · 1503 阅读 · 0 评论 -
c++多线程 加锁(仅供自己复习使用)
解决死锁的方法1、使用互斥量的时候使用的顺序必须相同,不同就会出现死锁现象。2、使用std::lock(mutex ...)函数,一次性同时对多个互斥量加锁,也就不存在顺序的问题,但是这样做完之后需要一个一个的解锁,比较麻烦。int main(){ mutex mtx1,mtx2; vector<int> val; for(int i = 0;i < 10;++i) { std::lock(mtx1,mtx2); //同时加锁 val.emplate_back(i原创 2022-01-13 20:28:17 · 4070 阅读 · 0 评论 -
c++11中的std::move()和std::forword()
在了解二者之前需要先了解一下左值右值的概念。这是学习二者的基础。1、左值与右值的概念引用c语言中的概念:左值既可以出现在等号左边又可以出现在等号右边,而右值则只能出现在等号右边,这就是二者的区别。左值的特点:可以寻址的变量,可持久性。右值的特点:不能寻址的常量,或者是表达式求值过程中创建的无名临时对象、或者短暂性的。2、左值引用与右值引用左值引用:引用的是一个对象右值引用:必须绑定到右值的引用,可实现“移动语义”,通过"&&"获取右值引用。int x = 5; //x为左原创 2022-01-13 15:41:17 · 423 阅读 · 1 评论 -
C++11 实现简单的线程池
C++11 实现简单的线程池需要提前了解一些C++11的线程知识线程池设计思想需要提前了解一些C++11的线程知识需要提前了解,thread 的创建,mutex的基本使用,unique_lock与mutex绑定,函数对象化包装(function),移动语义。线程池设计思想线程池首先需要进行初始化,本代码初始化了5个线程(手动指定),开始5个线程会被阻塞,等待任务队列中有任务,任务存储在queue队列中,当队列中有任务的时候,会唤醒一个线程来处理此任务。任务队列大小本程序指定了3个。MyThread转载 2021-11-09 19:10:32 · 179 阅读 · 0 评论