原样转发的意义
前文我们实现了一个my_move函数,用来模拟stl的move操作,实现去引用的功能。其内部的原理就是通过remove_reference实现去引用操作。
有时我们也需要保留原类型的左值或者右值属性,进行原样转发,此时就要用forward实现转发功能。
我们先定义一个模板函数
前文我们实现了一个my_move函数,用来模拟stl的move操作,实现去引用的功能。其内部的原理就是通过remove_reference实现去引用操作。
有时我们也需要保留原类型的左值或者右值属性,进行原样转发,此时就要用forward实现转发功能。
我们先定义一个模板函数
前文介绍了async
用法,很多朋友说用的不多,我对async
的理解就是开辟一个一次性的线程执行并行任务,主线程可以通过future
在合适的时机执行等待汇总结果。本文通过并行和函数式编程,演示快速排序提升效率的一种方式。
本文介绍如何使用条件变量控制并发的同步操作,试想有一个线程A一直输出1,另一个线程B一直输出2。我想让两个线程交替输出1,2,1,2…之类的效果,该如何实现?有的同学可能会说不是有互斥量mutex吗?可以用一个全局变量num表示应该哪个线程输出,比如num为1则线程A输出1,num为2则线程B输出2,mutex控制两个线程访问num,如果num和线程不匹配,就让该线程睡一会,这不就实现了吗?比如线程A加锁后发现当前num为2则表示它不能输出1,就解锁,将锁的使用权交给线程A,线程B就sleep一会。
本文介绍C++ 并发中使用的其他类型的锁,包括unique_lock
,shared_lock
, 以及recursive_lock
等。shared_lock
和unique_lock
比较常用,而recursive_lock
用的不多,或尽可能规避用这种锁。
C++ 类的继承封装和多态
Linux环境搭建和编码
windows环境搭建和vscode配置
slice介绍和使用
解密定时器的实现细节