线程的定义

线程的定义,第1张

c++ boost线程命名(c++项目实战)

一、维护语言的稳定性和兼容性”总结:主要是utf8字符串,支持虚函数override/final。1.c++11宏和类型(考虑兼容c99): STDC_HOSTED,STDC,__VA_ARGS__宏可以替换…,__cplusplus宏用于C和c++,非布尔值也可以用来判断是否支持c++ 11;_Pragma运算符。Long64bit,static_assert用于编译时警告,表达式必须是常量。字符串是utf-8类型,可以用utf-16,char*等转换。可以使用sizeof (class:: non-static member)来获取成员大小。2.面向对象语言的完美特性:虚函数覆盖/最终支持;为非静态成员变量添加就地初始化=和{}符号;noexcept函数声明没有抛出异常。如果抛出,程序会用std::terminate()终止;3.改进扩展模板的语法:friend FriendClass可以声明朋友,也可以用在模板中;模板函数也支持默认参数;显式模板实例化和外部模板声明优化链接;以及匿名和本地类/结构等。,都可以用作模板参数。

二。“面向普遍,面向特殊”的总结:主要是引入正确的价值参照、移动语义和完美转发。1.更注重性能,高效兼容C:引入正确的值引用类型,实现函数模板的完美转发;兼容C语言,定义pod类型;财团的扩张。2.面向对象编程应该更高效更简单:移动构造函数,移动语义;继承构造函数和构造函数委托;Explict扩展到类型转换函数;初始化对类型列表的支持。3.改进和扩展泛型编程语法:模板可以在inline name 空和parent 空之间重新定义;使用别名可以用于模板和实例化模板;当实例化一个模板时,SFINAE的原则被扩展以允许模板参数中的非实例化表达式。

三。“易学易用”总结:主要是引入类型派生规则,用于自动范围和迭代。1.基本符号编译器增强:1)。 gt gt避免在模板或类型转换中添加额外的空单元格。2).对于(汽车 ampE: containerObj){}数组和stl容器支持自动作用域和迭代语句(e是STL中的元素类型),自定义容器需要重载。2.添加了新的类型派生规则:1)。自动编译时类型主要用于函数或表达式中的变量,但不用于函数参数、类成员、数组和模板的实例化(虽然提供了值),而是用于初始化列表和新对象。volatile和const修饰符将被删除。2).decltype是最灵活的编译时类型。它可用于根据表达式确定所有表达式类型(函数的返回值不确定)的情况,而不仅仅是导出类型。它可以去掉volatile和const修饰符。判断左值的技巧。Auto可以减少代码量,decltype可以更灵活地获取表达式运算后的类型。它们都具有类型适应性(修改值后不需要改变类型),可用于库相关代码的编译。通过确定类型,业务逻辑会更加清晰。3.跟踪返回类型,自动和decltype的组合,自动求和(T1 amp;T1,T1 ampT2)- gt;Dectype (t1+t2) {return t1+t2}可以确定运算后变化的类型,增强函数和函数指针的泛型能力。

四。“提高型安全性”总结:1。新枚举类型:枚举类enumName:type{}添加了范围限定符和类型。2.智能指针:unique_ptr在单个模块中使用,shared_ptr和weak_ptr通过引用计数在多个模块间共享。记得初始化;句子是否有效,*和->;使用时,需要转换为原始指针迭代跳转;移动或重置后请小心使用。3.GC:标记-清除GC实现。现在,接口是临时定义的。原因是指针太灵活(指针在内存中随机跳转),导致指针隐藏。GC会误删。通过用declare_reachable等标记隐藏指针来解决。,并且删除和回收是兼容的。

动词 (verb的缩写)“提高性能及其 *** 作硬件的能力”总结:1、1)constexpr是一个编译时常数,constexpr元编程的引入;2)变长参数模板类和函数模板,库编写用简单的实例思维解决,非库编写人员可以使用容器的元组和安置系列函数。对于库程序员来说,元编程是一种简化,而不是复杂化。2.并行编程:1)原子类型:原子定义基本类型,自定义类型用_Atomic实现(目前还不支持)。原子型是编译器使用系统底层的总线锁或存储锁来加速锁定,其他并发访问线程会被阻塞。atomic_flag旋转无锁同步,memory_order对弱序列码进行内存模型优化,是cpp11并行编程的一大亮点。2).多线程库介绍:cpp11的内置线程实际上封装了pthread线程,比较好用,但是没有pthread的底层和控制能力强。3).TLS变量,它绑定到全局静态常量数据和线程生存期。关键字是thread_local。cpp11errorno变量是线程本地的,而不是全局的。3.进程退出:使用quick_exit,如果需要退出回调,使用at_quick_exit (LLVM还没有实现);异常退出仍然需要由terminate实现。

不及物动词“为改变思维方式而改变”总结:1。引入了NULLptr,用单一职责的思想来避免null中指针和整数的二义性。可以将nullptr_t类型赋给指针,并与指针进行比较。2.=default恢复编译器的默认函数,方便编写和保证POD类型;=delete指定删除,方便禁止一些复制构造赋值和移动复制构造赋值功能。也可以禁止全局函数和普通函数的一些重载版本。3.介绍lambda函数编程,注意在捕获列表中传递值和传递引用的区别(两者都定义和初始化类似函数的闭包对象,但调用时获取上下文值,amp自定义类型性能更高,但要谨慎使用)。在stl仿函数、泛型编程、复杂函数中作为匿名函数广泛使用。Lambda不同于仿函数,只能在函数内部初始化和使用。自定义模仿函数和普通函数可以在不同的作用域进行初始化和使用,使用的时候区分一下就好了。

七。融入实际应用”总结:1。alignas是设置变量的对齐大小,alignof是获取变量的对齐大小,可以单独设置;stl库中的align函数、aligned_storage和aligned_union模板对齐内存块。2.cpp11引入的通用属性、[[noreturn]](用于异常、终止、无限循环函数中)和[[carriers _ dependency]](用于弱内存模型的并行编程中)属性声明符号。3.Unicode字符串,1)1)CPP 11中默认的字符串是utf8代码,也可以在空 (utf16更方便)之间进行增删查。要计算的字数需要转换成u16string。2)c++11基于locale用codecvt进行字符转换,也可以用wstring_convert直接用codecvt_utf8_utf16等进行转换。注意utf16有大有小。3)输出一些设置时,会在内部调用与设置相关的函数。cpp98增加了wifstream和wofstream类,但是cpp11没有u16ifstream和u32ofstream等。,所以需要转换成更经济的utf8类型。4)原生字符串文字,语法R“()”,但不能再使用转义字符。

八、c++11与boost的关系,boost的使用:

可以大致看看C++11比C++03多了什么。这些东西很多都是从boost Curilla传过来的。主要的数据结构是智能指针、线程和散列。

正则表达式,另外boost里有filesystem,我觉得更实用。

尽量用c++11。当使用boost可以得到更方便的解决方案时,可以使用boost,比如:filesystem,date_time(其实用cpp11实现也是可以的)。

郑重声明:本文版权归原作者所有。转载文章只是为了传播更多的信息。如作者信息标注有误,请第一时间联系我们修改或删除。谢谢你。

转载:感谢您对网站平台的认可,以及对我们原创作品和文章的青睐。非常欢迎大家分享到个人站长或朋友圈,但转载请注明文章来源“蝶芒网”。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/4683298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-07
下一篇 2022-11-07

发表评论

登录后才能评论

评论列表(0条)

保存