美文网首页程序员
C++ 多线程编程

C++ 多线程编程

作者: 程序员__ | 来源:发表于2018-12-31 18:59 被阅读28次

在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率:

● l 并发

● l 异步

● l 缓存

下面将我平常工作中遇到一些问题例举一二,其设计思想无非以上三点。

1任务队列

1.1 以生产者-消费者模型设计任务队列

生产者-消费者模型是人们非常熟悉的模型,比如在某个服务器程序中,当User数据被逻辑模块修改后,就产生一个更新数据库的任务(produce),投递给IO模块任务队列,IO模块从任务队列中取出任务执行sql操作(consume)。

设计通用的任务队列,示例代码如下:

详细实现可参见:

推荐C语言C++学习交流群:231662552

务队列使用技巧

1.2.1 IO 与 逻辑分离

比如网络游戏服务器程序中,网络模块收到消息包,投递给逻辑层后立即返回,继续接受下一个消息包。逻辑线程在一个没有io操作的环境下运行,以保障实时性。示例:

推荐C语言C++学习交流群:231662552  

注意,此模式下为单任务队列,每个任务队列单线程。

1.2.2 并行流水线

上面的只是完成了io 和 cpu运算的并行,而cpu中逻辑操作是串行的。在某些场合,cpu逻辑运算部分也可实现并行,如游戏中用户A种菜和B种菜两种操作是完全可以并行的,因为两个操作没有共享数据。最简单的方式是A、B相关的操作被分配到不同的任务队列中。示例如下:

推荐C语言C++学习交流群:231662552     

相关文章

  • 多线程编程

    参考:C++ 并发编程 线程 windsows多线程 new thread(...) linux 多线程: pth...

  • c++操作系统类编程 - read list

    Concurrency C++ in Action Linux多线程服务端编程:使用muduo C++网络库 现代...

  • 技术学习方法论

    C++: 如何看懂《Linux多线程服务端编程——使用muduoC++网络库》于洋的回答

  • C++并发编程实战介绍附下载

    《C++并发编程实战》是一本基于C++11新标准的并发和多线程编程深度指南。内容包括从std::thread、st...

  • c++多线程编程

    多线程编程知识 [toc] 1.互斥锁 当有一个链表,这个链表需要两个线程互斥访问时,我们就需要互斥锁。为什么呢?...

  • C++ 多线程编程

    在开发C++程序时,一般在吞吐量、并发、实时性上有较高的要求。设计C++程序时,总结起来可以从如下几点提高效率: ...

  • CAS与内存屏障: c/c++的内联汇编(S0)

    c++的CAS与内存屏障: c/c++的内联汇编(S0) 多线程编程中偶尔需要接触一些底层的东西,如CAS,原子操...

  • Linux 中的线程局部存储(1)

    在Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类...

  • JAVA内存模型---JMM

    JAVA多线程编程是JAVA有别于C/C++的一大特性。最近在学习JAVA并发编程的艺术,遇到了很多问题,但是既然...

  • 多线程编程

    多线程编程之Linux环境下的多线程(一)多线程编程之Linux环境下的多线程(二)多线程编程之Linux环境下的...

网友评论

    本文标题:C++ 多线程编程

    本文链接:https://www.haomeiwen.com/subject/jaswlqtx.html