![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++高性能编程
文章平均质量分 89
ichdream
这个作者很懒,什么都没留下…
展开
-
【GPGPU编程】核心概念blockIdx和blockDim区别和联系
而线程网格是由线程块组成,其数量有gridDim来指定。线程块是线程的集合,其数量由blockDim来指定。我们在编程时会通过blockIdx和blockDim和数据的索引index来建立映射。线程网格是最大的线程范围,它包含了主机代码在启动内核函数时所涉及到的所有线程。在GPGPU的架构中,有两个核心概念:blockIdx和blockDim。这两个有什么区别和联系呢?原创 2023-04-04 13:33:21 · 415 阅读 · 0 评论 -
【C++高并发编程】reactor并发编程模型
Reactor模式是一种事件驱动的并发编程模型,它解决了在高并发环境下处理大量客户端请求的问题。Reactor模式的核心思想是将事件的处理逻辑与事件分发机制解耦,使得程序能够以非阻塞方式处理多个I/O事件。Reactor模式利用操作系统提供的I/O多路复用机制(如select、poll、epoll等),高效地监听和分发事件。Reactor模式的基本组件:fill:#333;color:#333;color:#333;fill:none;分发事件生成事件处理事件Reactor事件处理器事件源。原创 2023-04-01 18:46:51 · 953 阅读 · 0 评论 -
【C++高性能编程专题】高并发编程模式
不同的是,Proactor模式中的事件处理是基于异步操作完成的,即IO操作完成后,系统会发出信号通知应用程序,然后应用程序可以处理已完成的IO操作。在Actor模式中,每个Actor都是单线程执行,因此不需要考虑线程同步和资源竞争的问题,可以避免很多并发问题,提高程序的可维护性和可靠性。Active Object模式是一种基于消息传递的并发模式,它通过将对象的方法调用封装为消息,将消息传递给对象的消息队列中,然后由对象的私有线程从队列中取出消息进行处理。该模式通常使用同步线程池和异步事件处理器来实现。原创 2023-04-01 12:36:00 · 597 阅读 · 0 评论 -
如何删除C++容器中满足特定条件的元素
C++ 中的 remove-erase idiom 解决了在删除容器(如 vector、list、deque 等)中满足特定条件的元素时可能遇到的以下问题:遍历与删除的问题:当我们在遍历容器的过程中删除元素时,可能会导致迭代器失效,从而引发未定义行为。remove-erase idiom 通过将要删除的元素移至容器末尾,并在遍历结束后统一删除,避免了这个问题。效率问题:直接使用容器的 erase 函数逐个删除元素可能导致低效的操作。原创 2023-03-18 21:40:36 · 800 阅读 · 0 评论