C++11学习心得(二)

接着上一篇的继续写
上一篇链接:https://blog.csdn.net/zuimman/article/details/121520790?spm=1001.2014.3001.5501
4多线程
c++11之前的多线程和并发是通过第三方库来实现的,c++11之后引进了thread类,可以直接进行多线程和并发实现。
多线程的类是thread类,其成员函数join函数,可以启动线程运行。
但是并发最大的问题就是多个线程共享进程的内存空间,这就会导致争抢数据的情况,因此c++11,引入了原子数据类型:atomic t;
这就保证了并发数据不会出错和冲突。

#include<atomic>
#include<thread>
#include<iostream>
using namespace std;
 
atomic_int total {0};

void func(int){
for(int i=0;i<10;i++){
 total+=i;}
}
int main(){
 thread t1(func,0);
 thread t2(func,0);
t1.join();
t2.join();
cout<<total<<endl;
return 0;
}

5.lambda函数
lambda表达式的格式:capture mutable ->type{statement}
其中capture是捕捉列表,就是捕捉变量的意思。parameters是参数,对比于一般函数里面的参数,mutalble是修饰符,->return-type
是返回类型。{statement}是函数体。

#include<iostream>
using namespace std;
int main() {
	int girls = 1, boys = 4;
	auto sum = [](int x, int y)->int {return x + y; };
	cout << "两个数的和为:";
	cout<<sum(girls, boys);
	return 0;
}

补充:命名空间,为什么一般不推荐使用using namespace space,是因为这个会把命名空间space的所有名字都引入,容易发生命名空间污染。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值