Mike's Blog

Congratulations, you found my peach garden (=゚ω゚)ノ

C++11线程库使用(三)

创建多个线程 & 数据共享问题

1 创建和等待多个线程 把thread对象放入到容器里管理,可理解为thread对象数组,这方便了我们一次创建大量的线程并对大量线程管理; 多个线程执行顺序是乱的,这与操作系统内部CPU调度算法有关; 推荐使用join,令主线程等待所有子线程运行结束,最后再结束主线程,这样程序更稳定; // 多个线程公用一个线程入口函数 void test(int num) { co...

C++11线程库使用(二)

detach与线程传参 & 成员函数做线程函数

1 传递临时对象作为线程参数 1.1 使用detach()所导致的线程参数地址问题 void myPrint(const int& i, char* pbuf) { // 参数分别使用引用和指针传参,这将带来隐患 cout << i << endl; // 【断点】 cout << pbuf << endl;...

C++11线程库使用(一)

线程创建与结束 & join与detach

1 线程的创建及运行 1.1 thread —— 创建线程 调用C++11里的标准库:thread #include <thread> 通过可调用对象创建线程 thread myObj(myPrint); /** * 1. 这句代码创建了线程,并且线程执行的起点(入口)是myPrint函数; * ...

Linux下libstdc++的版本问题

Linux下无法链接到libstdc++最新版本的问题

1 报错出现 1.1 错误日志信息 腾讯引力计划mini项目中计划使用组内的Bon协议来作为信息的载体。从git上拉下来Bon了C++源码及其提供的demo,对demo进行编译后,出现如下报错: [命令]./bon_demo [报错]./bon_demo: /lib64/libstdc++.so.6: version 'CXXABI_1.3.9' not found (required by...

gdb:No symbol table is loaded

gdb使用报错(No symbol table is loaded)原因总结

1 原因一 使用gdb前务必加-g选项,否则将出现如下报错: 2 原因二 2.1 问题出现 在添加了-g选项后,使用gdb依然报错,如下所示: 2.2 问题解决 如2.1节图所示,当前gcc版本为11.1.0,而gdb的版本为7.6.1;报错提示表示:当前我添加了-g选项后gcc11.1.0生成的调试信息是dawnfs5,而gdb7.6.1可支持的为dawnfs2、daw...

Rvalue references & Move semantis

C++11 - 右值引用和move语义

文章参考:侯捷-C++11新特性 1 右值引用(Rvalue references) 1.1 概念 右值引用(Rvalue references)是一种新的引用类型,它能够帮助解决非必要的拷贝(unnecessary copying),即:当赋值的右手边是一个右值(rvalue)的话,那么左手边的对象可以去偷取(steal)右手边对象的资源(resources: 内部的资源),...

lambad

C++11 - lambad 讲解与使用

文章参考:侯捷-C++11新特性 C++11引入Lambad,以允许定义一个inline的功能,Lambda表达式可以被用来作为一个参数或者一个对象;Lambda改变了我们使用C++标准库的使用方式(比如我们之前可以使用函数对象或仿函数来嵌入标准库中声明我们的排序方法,Lambda具有同样的功能) 1 简单的Lambda // 下面的代码表示了一个Lambda表达式的...

Uniform Initialization

C++11 - 一致性初始化{}

文章参考:侯捷-C++11新特性 下篇文章:initializer_list 1 出现原因 在C++11之前,程序员或新手可能很困惑于一件事情:如何初始化一个变量或者一个对象,因为这种初始化可能发生在小括号()、大括号{}、赋值运算符=上。 2 如何使用 基于这个原因,C++11导入了“Uniform Initialization(一致性初始化)”,即:任何初始...

initializer_list

C++11 - initializer_list

文章参考:侯捷-C++11新特性 1 initializer_list的使用 1.1 函数参数可以为initializer_list 1.2 函数调用实验 【注意】下例中的赋值例子,依然调用的是构造函数,而不是赋值拷贝函数,因为这是直接创造了一个新的对象而不是旧对象的新赋值! 当类中同时包含“特定个数参数”和“initializer_list”重载时: ...

decltype

C++11 - decltype关键字

文章参考:侯捷-C++11新特性 使用关键字decltype,可以令编译器找到一个表达式的类型。 1 decltype的使用场景 1.1 用来声明一个返回值类型(used to declare return types) 1.2 可以用于元编程(in metaprogramming) 1.3 用于传入一个lambda类型