
C/C++
文章平均质量分 92
C/C++
闲谈社
有没有生发神药推荐啊
展开
-
C++11的多线程、function和bind、可变函数模板
文章目录一、C++11多线程thread1.1 线程thread1.1.1 构造函数1.1.2 主要成员函数1.1.3 范例示范1.2 互斥量1.2.1 独占互斥量std::mutex1.2.2 范例1.2.3 lock_guard和unique_lock的使用和区别1.3 条件变量1.3.1 wait函数1.3.2 wait_for函数1.3.3 wait_until函数1.3.4 notify_one函数1.3.5 notify_all函数1.4 异步操作1.4.1 std::aysnc和std::fu原创 2023-09-07 13:45:55 · 571 阅读 · 0 评论 -
匿名函数lambda
在C++14之前,lambda表示的形参只能指定具体的类型,没法泛型化。本专栏知识点是通过的系统学习,进行梳理总结写下文章,对c/c++linux课程感兴趣的读者,可以点击链接,详细查看详细的。上面提到的值捕获、引用捕获都是已经在外层作用域声明的变量,因此这些捕获方式捕获的均为左值,而不能捕获右值。手动书写捕获列表有时候是非常复杂的,这种机械性的工作可以交给编译器来处理,这时候可以在捕获列表中写一个。1)采用值捕获的方式,lambda不能修改其值,如果想要修改,使用mutable修饰。原创 2023-09-07 13:45:23 · 340 阅读 · 0 评论 -
C++新特性:右值引用,移动语义,完美转发
1)左值可以取地址、位于等号左边;2)而右值没法取地址,位于等号右边。例如int a = 6;1)a可以通过 & 取地址,位于等号左边,所以a是左值。2)6位于等号右边,6没法通过 & 取地址,所以6是个右值。又例如struct A {a_ = a;int a_;A a = A();1)同样的,a可以通过 & 取地址,位于等号左边,所以a是左值。2)A()是个临时值,没法通过 & 取地址,位于等号右边,所以A()是个右值。原创 2023-09-07 13:44:42 · 269 阅读 · 0 评论 -
C++新特性:智能指针
智能指针主要解决以下问题:1)内存泄漏:内存手动释放,使用智能指针可以自动释放2)共享所有权指针的传播和释放,比如多线程使用同一个对象时析构问题,例如同样的数据帧,但是业务A和业务B处理的逻辑不一样(都是只读)。可以用shared_ptr共享数据帧对象的所有权。线程A释放的时候,shared_ptr的引用计数count - 1,当为0的时候释放数据帧对象指针。主要类型:C++里面的四个智能指针:auto_ptrshared_ptrunique_ptrweak_ptr。原创 2023-09-07 13:44:00 · 2088 阅读 · 0 评论