摘要:
简介 本文将介绍一下如何使用docker编译红米k20pro的内核。作者当时尝试构建内核的原因是为了将3年前(好像是吧)购买的k20pro至尊版(已退役,12GB内存,512GB硬盘)制作成一个小的服务器。而如果只有安卓系统,实在是过于简陋,因此作者想在该机器上安装docker以扩展到更加完整的功能 阅读全文
摘要:
简介 结构体 函数 getcontext setcontext makecontext swapcontext 简介 ucontext.h是GNU C库的一个头文件,主要用于用户态下的上下文切换。需要注意的是,由于makecontext中设计的一些问题,该文件已经被标记为过时的1。如果需要类似的功能 阅读全文
摘要:
目录 目录 简介 使用方法 限制 总结 简介 Boost.PFR是一个Boost 1.75版本出的C++14的基础反射库,其使用非常简单,非常便捷,但是适用性也比较差,有很多的地方无法使用,适合比较简单的结构体。 使用方法 获取字段 struct simple { char a; float f; 阅读全文
摘要:
目录 目录 前言 泛型是什么 Go的泛型 泛型函数 泛型类型 类型集合 和接口的差异 总结 前言 经过这几年的千呼万唤,简洁的Go语言终于在1.18版本迎来泛型编程。作为一门已经有了14年历史的强类型语言,很难相信它到现在才开始有一个正式的泛型。 虽然直到1.18版本才加入泛型,但是在2014年便有 阅读全文
摘要:
目录 目录 前言 信号量 counting_semaphore latch与barrier latch barrier 总结 前言 前面四部分内容已经把目前常用的C标准库中线程库的一些同步库介绍完成了,这一次我们探讨的都是C20中的内容。主要有两个部分,信号量和latch与barrier。 由于GC 阅读全文
摘要:
目录 目录 前言 invoke_result 标准库中的invoke_result 我的实现 后记 前言 本篇博文将详细介绍一下libstdc++中std::invoke_result的实现过程,由于个人水平不足,可能最终的实现过程略有误差,还请各位指正。 invoke_result std::in 阅读全文
摘要:
目录 目录 前言 条件变量 一些需要注意的地方 总结 前言 本文主要介绍了多线程中的条件变量,条件变量在多线程同步中用的也比较多。我第一次接触到条件变量的时候是在完成一个多线程队列的时候。条件变量用在队列没有数据时,等待入队线程入队数据。相比较于锁的使用,条件变量的使用更为复杂,使用时需要注意的部分 阅读全文
摘要:
目录 目录 前言 lock_guard scoped_lock (C++17) unique_lock shared_lock 总结 ref 前言 前两篇的博文分别介绍了标准库里面的线程和锁,这一次的博文将会介绍锁的管理。 锁在多线程编程中非常常用,但是一旦使用不谨慎就会导致很多问题,最常见的就是死 阅读全文
摘要:
前言 完成了前面三个模板元编程的排序以后,开始对Boost的MPL库感兴趣了,于是便使用MPL重新实现了一下那三个排序算法,选择排序、快速排序、堆排序。 时间上来说和之前差不多,堆排序花了我大部分的时间。最简单是应该就是选择排序了,只使用了一个类就实现了。 使用感悟 BoostMPL大大简化了元编程 阅读全文
摘要:
目录 目录 简介 最基本的锁 std::mutex 使用 方法和属性 递归锁 std::recursive_mutex 共享锁 std::shared_mutex (C++17) 带超时的锁 总结 简介 上一篇博文中,介绍了一下如何创建一个线程,分别是std::thread和std::jthread 阅读全文