链接
408 数一 英一 政治 答题卡pdf下载直链
统考答题卡
408 09-24年 真题pdf下载直链
408 pdf资源目录
C++实现一个线程池
原文链接:C++实现一个线程池
C++11标准 智能指针
原文链接:C++11标准 智能指针
c++11标准 decltype,result_of和后置返回类型
原文链接:c++11标准 decltype,result_of和后置返回类型
c++11提供了decltype和result_of两种类型推导方法.
decltype用于表达式类型推导
result_of用于函数或可调用对象,例如function,函数指针
decltype
decltype是在编译时获取表达式或对象的返回值类型,适用于泛型编程类型的获取
示例
1 | //1 变量类型 |
std::declval: 对于表达式的参数 不构造实例 获取返回类型
如果希望表示一个类的成员函数的返回值类型,但是不能创造这个实例时,可以通过declval创建一个类的引用获取成员函数返回值
同样适用于抽象类无法构造实例
1 | class A{ |
result_of
result_of(c++11),result_of_t(c++14),invoke_result(c++17)
result_of在不同标准中多次修改,如果没有限定c++标准的化,应使用invoke_result
1 | // result_of |
实例:分析线程池任务入队的函数返回类型
1 | template<typename F> |
该函数使用一个后置返回类型
F一般是一个函数或可调用对象function,并且是无参封装的,因此std::result_of<F()>::type就是函数的返回值.
typename是用于在这些模板传参中,有类型传参的函数中,如果使用result_of,那需要typename声明这个result_of::type是一个类型
因此该函数就是 将function f构造一个task,入队,并将该task的返回值传给future,作为返回值.
C++11标准 条件变量condition variable
原文链接:C++11标准 future异步线程库
介绍
condition variable是c++11标准中用于线程协调同步的对象.主要包括wait和notify两个操作.
wait判断条件决定是否阻塞,notify则负责唤醒阻塞的线程.
条件变量因为是进程间共享的,因此需要互斥访问
C++11 wrapper装饰器 bind+function
C++11标准 future异步线程库
fork函数 创建多进程
原文链接:fork函数 创建多进程