【翻译】oneAPI DPC++ 编译器和运⾏时架构设计 2022-12-20 C++ 这是一篇描述DPC++编译器架构和原理的翻译,原文为:https://intel.github.io/llvm-docs/design/CompilerAndRuntimeDesign.html,读完这篇文章能够大概理解DPC++编译器是如何将不同架构的代码编译在一起并一起运行起...
关于std::weak_ptr使用的理解 2022-10-31 C++ 周末时候和朋友聊了一下C++的智能指针,突然发现虽然智能指针进入C++11标准库已经有十多年了,但是我们对部分细节的理解还是比较局限,以std::weak_ptr为例,很多人的理解只是停留在避免std::shared_ptr出现相互引用,导致对象无法析构,内存无法释放的问题。当然...
2022全球C++及系统软件技术大会之旅 2022-09-30 Tips 作为一个搞C++技术的人,9月的最后几天时间是值得开心的。因为由于疫情原因取消了一年的全球C++及系统软件技术大会,终于在9月28、29两天顺利开幕。虽然我的时间很紧张,28号下午才到,错过了开幕,29号急匆匆的昨晚演讲就离开上海,但是期间也和很多老朋友见面聊天。 这次C++大会...
K+ 技术峰会之旅&C++新标准细节简析 2022-08-21 Tips 这年头,参加一次线下技术大会实属不易,当然举办方就更加不容易了。这届K+大会举办地是深圳,好巧不巧,开幕前一周深圳出现疫情,大会临时将举办地点从迁移到没有疫情的区域,只用了一周时间,可想而知这个事情有多难。 到举办酒店后,确实能感受到举办方满满的诚意和热情,这让我是没想到的,尤其...
关于构造函数中调用虚函数 2022-07-03 C++ 在我们学习C++编程的时候,通常都会被告诫:“不要在构造函数中调用虚函数”。为什么会有这样一条规则呢?从语法上来看,当构造函数的函数体执行的时候,该类的虚表和虚表指针应该已经准备就绪了,不会造成调用失败或者引发未定义行为,例如: #include <iostream>...
返回值优化和拷贝消除的一点补充 2022-06-01 C++ 在我写的《现代C++语言核心特性解析》中有一个小节是讲解的返回值优化,在这篇文章中,我将对这部分内容进行一点补充,将更多细节展示出来。首先还是来看看书中的这段代码: #include <iostream> class X { public: X()...
谨慎使用std::async 2022-05-02 C++ std::async是C++11标准引入的函数模板,它用于异步执行某些任务,通常在单独的线程或者线程池中运行,它会返回一个std::future用于等待和获取异步执行的结果。为什么这里说需要谨慎使用呢?其实原因上面一句话也提到了,就是它可能是在单独的线程中运行的。那么躲过我们想并...
值传参 2022-04-12 C++ 我在大学里学C++的时候,印象最为深刻的是老师反复告诫我们,应该如何传递函数参数。为了避免发生不必要的内存拷贝和复杂的对象构造,一般来说对于复杂对象都会采取使用传递引用的方式,当然如果参数不会被改变,最好使用常量引用,只有一些基础类型可以通过值传递参数。按照上述方式写代码确实不会...
oneAPI 组件简介 2022-03-08 Tips 在oneAPI的一系列的产品中,我首先要介绍的是DPC和它的编译器,因为这部分内容十分有趣。我们都知道,一个程序运行效率高低,跟语言本身和他的编译器是息息相关的,比如我们不能指望python的程序在算法和运行环境相同的情况下跑过C和C的程序。 Intel的DPC团队当然考虑到了...