1. Posted on 2023-09-25 | In C++

    原样转发的意义

    前文我们实现了一个my_move函数,用来模拟stl的move操作,实现去引用的功能。其内部的原理就是通过remove_reference实现去引用操作。
    有时我们也需要保留原类型的左值或者右值属性,进行原样转发,此时就要用forward实现转发功能。
    我们先定义一个模板函数

    Read more »
  2. Posted on 2023-09-24 | In C++

    简介

    前文介绍了async用法,很多朋友说用的不多,我对async的理解就是开辟一个一次性的线程执行并行任务,主线程可以通过future在合适的时机执行等待汇总结果。本文通过并行和函数式编程,演示快速排序提升效率的一种方式。

    Read more »
  3. Posted on 2023-09-17 | In C++

    简介

    本文介绍C++ 并发三剑客, future, promise以及async用法。这三个类是实现并发技术的关键,接下来详细介绍一下

    Read more »
  4. Posted on 2023-09-10 | In C++

    简介

    本文介绍如何使用条件变量控制并发的同步操作,试想有一个线程A一直输出1,另一个线程B一直输出2。我想让两个线程交替输出1,2,1,2…之类的效果,该如何实现?有的同学可能会说不是有互斥量mutex吗?可以用一个全局变量num表示应该哪个线程输出,比如num为1则线程A输出1,num为2则线程B输出2,mutex控制两个线程访问num,如果num和线程不匹配,就让该线程睡一会,这不就实现了吗?比如线程A加锁后发现当前num为2则表示它不能输出1,就解锁,将锁的使用权交给线程A,线程B就sleep一会。

    Read more »
  5. Posted on 2023-09-03 | In C++

    简介

    本文介绍C++ 线程安全的单例模式如何实现,通过介绍单例模式的演变历程,给读者更完备的实现单例模式的方案。

    Read more »
  6. Posted on 2023-09-02 | In C++

    简介

    本文介绍C++ 并发中使用的其他类型的锁,包括unique_lockshared_lock, 以及recursive_lock等。shared_lockunique_lock比较常用,而recursive_lock用的不多,或尽可能规避用这种锁。

    Read more »
  7. Posted on 2023-08-26 | In C++

    简介

    本文介绍如何使用互斥量保证共享数据的安全,并讲述死锁的相关处理方案。

    Read more »
  8. Posted on 2023-08-13 | In C++

    简介

    本文主要介绍线程的基本管控,包括线程的发起,等待,异常条件下如何等待以及后台运行等基础操作。

    Read more »
  9. Posted on 2023-08-13 | In C++

    简介

    本节介绍C++线程管控,包括移交线程的归属权,线程并发数量控制以及获取线程id等基本操作。

    Read more »
  10. Posted on 2023-07-30 | In C++

    简介

    本文主要教会大家如何在Linux环境搭建C++ 所需的grpc和jsoncpp库,并教会大家如何编写cmake,并配置使用这些库。

    Read more »

热门文章

  1. C++ 类的继承封装和多态

    喜欢(588) 浏览(1663)
  2. Linux环境搭建和编码

    喜欢(594) 浏览(3188)
  3. windows环境搭建和vscode配置

    喜欢(587) 浏览(1422)
  4. slice介绍和使用

    喜欢(521) 浏览(1409)
  5. 解密定时器的实现细节

    喜欢(566) 浏览(1261)

最新评论

  1. golang 函数介绍 secondtonone1:函数是go中的一等公民,作为新兴语言,go摒弃了面向对象的一些糟粕,采取接口方式编程,而接口方式编程都是基于函数的,参数为interface,进而达到泛型作用,比如sort排序,只需要传入的参数满足sort所需interface的规定即可,需实现Len, Swap, Less三个方法,只要实现了这三个方法都可以用来做sort排序的参数。
  2. asio实现http服务器 secondtonone1:我认为IO复用节省了线程资源,不用像传统服务器一样为每个连接单独创立线程,而是统一通过epoll或者iocp通知。
  3. boost::asio之socket的创建和连接 secondtonone1:应该是半夜更新服务器导致的,目前好了。
  4. 面试题汇总(一) secondtonone1:看到网络上经常提问的go的问题,做了一下汇总,结合自己的经验给出的答案,如有纰漏,望指正批评。
  5. 使用mongo secondtonone1:mongo操作是程序员必备的基础技能,包括增删改查,以及较为复杂的查询,分组查询,条件查询,模糊查询,文档内查询等,本文结合自己实际开发经验做了整理。

个人公众号

个人微信