当前位置: 首页 > news >正文

微信做兼职什么网站好/金华seo全网营销

微信做兼职什么网站好,金华seo全网营销,企业邮箱邮箱,wordpress建站上海1 线程 std::thread 注意点: 线程退出,采用join时需要利用:joinable()进行判断当前线程是否安全。线程如果采用detach(),线程将分离,join将无法捕获,线程将独立自动退出。 2 锁 std::mutex 注意点&…

1 线程

std::thread
注意点:

  • 线程退出,采用join时需要利用:joinable()进行判断当前线程是否安全。
  • 线程如果采用detach(),线程将分离,join将无法捕获,线程将独立自动退出。

2 锁

std::mutex
注意点:

  • 独占的互斥量,不能递归使用。
  • 不建议使用mutex直接锁,主要是释放锁容易遗忘造成死锁

建议使用:lock_guard或者unique_lock上锁
注意点:

  • 这个锁构造创建,析构释放,栈上锁可以自动释放
  • unique_lock可以进行临时解锁和再上锁,如在构造对象之后使用lck.unlock()就可以进行解锁,
    lck.lock()进行上锁,而不必等到析构时自动解锁。
std::lock_guard<std::mutex> lck (mtx);
std::unique_lock<std::mutex> lck (mtx);

3 条件变量

std::condition_variable_any和std::condition_variable
注意点:

  • condition_variable在wait的时候需要和unique_lock锁配合使用
  • condition_variable_any等待的时候传入的是mutex锁先解锁再等待
//condition_variable和unique_lock使用传入的是unique_lock对象进行解锁后再等待
std::condition_variable _notEmpty;
std::unique_lock<std::mutex> locker(_mutex);
_notEmpty.wait(locker, [this]{return !_queue.empty(); });
//condition_variable_any和lock_guard使用直接传如mutex进行解锁后再等待
std::condition_variable_any _notEmpty;
std::lock_guard<std::mutex> locker(_mutex);
_notEmpty.wait(_mutex);

4 原子操作

std::atomic
注意点:

  • 初始化需要利用构造函数进行初始化
  • 在单例模式中对象创建中,主要是解决cpu reorder问题
std::atomic<int> foo(0); // 准确初始化
//设置原子操作对象
foo.store(x,std::memory_order_relaxed); // set value atomically
//获取原子操作对象
x = foo.load(std::memory_order_relaxed); // get value atomically

5 异步操作

std::future
注意点:

  • future使用的时机是当你不需要立刻得到一个结果的时候,你可以开启一个线程帮你去做一项任务,并
    期待这个任务的返回
#启动异步执行函数do_some_things
std::future<decltype (do_some_things())> result =std::async(do_some_things);
#本地处理函数:do_other_things
do_other_things();
#等待异步事件返回结果
std::cout << "result: " << result.get() << std::endl;

std::packaged_task
*注意点:

  • 简化任务,类似取别名
  • 必须要让任务执行,否则在get()获取future的值时会一直阻塞
int add(int a, int b){...
}
//为add取名task,或者是理解为加入一个容器中
std::packaged_task<int(int, int)> task(add);
do_other_things();
std::future<int> result = task.get_future();
//必须要让任务执行
task(1, 1); 
std::cout << result.get() << std::endl;

函数绑定

std::function
注意点:

void printA(int a){...}
//函数绑定
std::function<void(int a)> func;
func = printA;
func(2); 
//成员函数绑定 
std::function<void(const Foo&,int)> fplay= &Foo::printA;

std::bind
注意点:

  • 可将bind函数看作是一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表。
auto f1 = std::bind(funA,1,2,3); //表示绑定函数 fun 的第一,二,三个参数值为: 1 2 3
f1(); //print: x=1,y=2,z=3
//支持变参
auto f2 = std::bind(fun_1, placeholders::_1,placeholders::_2,3);//表示绑定函数 fun 的第三个参数为 3,而fun 的第一,二个参数分别由调用 f2 的第一,二个参数指定
f2(1,2);//print: x=1,y=2,z=3
http://www.jmfq.cn/news/5194531.html

相关文章:

  • 网站建设插入图片怎么加/怎么建个人网站
  • 鄂州第一官方网站/亚马逊查关键词搜索量的工具
  • 用phpcms做的网站模板/如何查询百度搜索关键词排名
  • 结合七牛云 做视频网站/报个电脑培训班要多少钱
  • 卖东西的网站怎么建设/外国搜索引擎登录入口
  • 中国人做跨电商有什么网站/公司做网站推广
  • 做网站要求高吗/seo优化交流
  • 阿里巴巴网站中详情页怎么做/2022最近热点事件及评述
  • 苏州网站建设哪个比较牛/成都网站建设方案推广
  • 珠海网站建设培训学校/seo人人网
  • 经营性网站备案要求/百度账号个人中心
  • 如何创建个人app/东莞百度seo在哪里
  • 中国商标注册网/系统优化大师
  • 易语言做网站客户端/免费代理上网网站
  • 站长论坛/软文接单平台
  • 建筑工程网络图片/aso优化费用
  • 怎么用云主机做网站/淘宝关键词优化怎么弄
  • 合肥百度 网站建设/代发百度首页排名
  • 益阳网站建设公司/重庆森林在线观看
  • 企业做网站有发展么/长春今日头条新闻
  • 铁岭市网站建设公司/互联网推广渠道有哪些
  • wordpress 佛系汉化组/公众号排名优化软件
  • 王爷的疯狂绝望/郑州百度关键词seo
  • 网站建设端口/如何推广公司
  • 手机好在百度做网站吗/51网站统计
  • 成都市武侯区建设局门户网站/优秀软文范例100字
  • 域名备案 个人 网站基本信息查询/山东网站建设
  • 杭州公司招聘/seo网站内容优化有哪些
  • 洛阳霞光营销型网站/seo综合查询站长工具
  • 网站备案如何转移/正规排名网站推广公司