c++并发
文章平均质量分 58
c++并发
creator_Li
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
缓存行Cache Line
缓存行(Cache Line)是 CPU 缓存的基本 “块”,CPU 不会单独读取 1 个字节的数据,而是一次性读取 1 个缓存行(通常 64 字节)的数据到缓存中。例如,当你访问一个int变量(4 字节)时,CPU 会把该变量所在的 64 字节连续内存数据都加载到缓存,后续若访问附近数据,直接从缓存读取即可,无需再访问内存。原创 2025-10-15 20:42:37 · 820 阅读 · 0 评论 -
c++并发编程
向线程函数传递参数的核心原则是:std::refstd::move。原创 2025-08-06 02:16:00 · 254 阅读 · 0 评论 -
Linux信号(游双未整理完)
Linux下,一个进程给其他进程发送信号的API是kill函数。其定义如下:#include#includesignal.h该函数把信号sig发送给目标进程;信号发送给组ID为-pid的进程组中的所有成员Linux定义的信号值都大于0,如果sig取值为0,则kill函数不发送任何信号。但将sig设置为0可以用来检测目标进程或进程组是否存在,因为检查工作总是在信号发送之前就执行。不过这种检测方式是不可靠的。一方面由于进程PID的回绕,可能导致被检测的PID。原创 2025-04-25 17:07:52 · 798 阅读 · 0 评论 -
高效并发编程:无锁编程
无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blocking Synchronization),实现非阻塞同步的方案称为“无锁编程算法”。为什么要非阻塞同步,使用lock实现线程同步有非常多缺点:产生竞争时,线程被阻塞等待,无法做到线程实时响应dead locklive lock优先级反转使用不当,造成性能下降假设在不使用 lock 的情况下,实现变量同步,那就会避免非常多问题。原创 2025-04-23 20:24:09 · 935 阅读 · 0 评论 -
POSIX多线程
线程,作为进程内的执行单元,可以理解为进程这个大舞台上的一个个小舞者,各自有着独立的舞步(执行路径),却又共享着舞台的资源(进程资源)。与进程相比,线程更加轻量级。进程是系统进行资源分配和调度的基本单位,拥有独立的地址空间、内存、文件描述符等资源 ,进程间的切换开销较大。而线程则是共享所属进程的资源,它们之间的切换开销相对较小,就像在同一个舞台上不同舞者之间的快速换位,无需重新搭建整个舞台。线程的这些特点,使得多线程编程在提升程序执行效率上有着独特的优势。原创 2025-04-23 00:48:18 · 811 阅读 · 0 评论 -
网络编程:IO复用
I/O复用使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要。通常,网络程序在下列情况下需要使用I/O复用技术:❑客户端程序要同时处理多个socket。比如本章将要讨论的非阻塞connect技术。❑客户端程序要同时处理用户输入和网络连接。比如本章将要讨论的聊天室程序。❑TCP服务器要同时处理监听socket和连接socket。这是I/O复用使用最多的场合。后续章节将展示很多这方面的例子。❑服务器要同时处理TCP请求和UDP请求。原创 2025-04-22 08:56:42 · 504 阅读 · 0 评论 -
定时器(时间轮)
【代码】定时器(时间轮)原创 2025-04-19 17:06:40 · 181 阅读 · 0 评论 -
消息队列msgqueue
【代码】消息队列msgqueue(c语言实现)原创 2025-04-18 09:00:43 · 369 阅读 · 0 评论 -
条件变量condition_variable
条件变量是一个对象,能够阻止调用线程,直到通知恢复。是 C++ 标准库中的一个同步原语,它与互斥锁(std::mutex)配合使用,用于线程间的等待和通知机制。原创 2025-04-12 20:08:59 · 447 阅读 · 0 评论 -
生产者消费者模型
【代码】生产者消费者模型。原创 2025-04-12 16:23:08 · 136 阅读 · 0 评论 -
C++ 多线程编程:锁的六种写法
在多线程编程中,锁是一种重要的同步机制,用于避免多个线程在并发访问共享资源时发生竞态条件。C++ 提供了多种锁机制,它们各自适用于不同的场景。本文将介绍 C++ 中常用的锁,包括std::mutex和,并通过示例说明每种锁的原理、使用方式及其适用场景。原创 2025-02-21 20:59:44 · 875 阅读 · 0 评论 -
并行版的std::accumulate
【代码】并行版的std::accumulate。原创 2024-12-14 17:37:54 · 415 阅读 · 0 评论 -
关于thread线程构造函数的语法解析问题
不启动线程的原因是因为编译器可能将其错误地解析为一个函数声明,而不是一个对象构造。为了避免这种情况,应该使用上述提到的任一正确做法来确保代码的正确性和意图的清晰表达。这里相当与声明了一个名为my_thread的函数,这个函数带有一个参数(函数指针指向没有参。这样的表达式时,它可能会尝试将其解析为一个函数声明,而不是对象构造。既可以用于函数调用,也可以用于函数声明中的参数列表。C++编译器会将其解析为函数声明,而不是类型对象的定义。如果你传递了一个临时变量,而不是一个命名的变。对象的函数,而非启动了一个。原创 2024-12-12 13:43:38 · 608 阅读 · 0 评论 -
线程守护者thread_guard
RAII的核心思想是,在资源(如文件、网络连接、线程等)的生命周期内,通过对象的构造和析构来自动管理资源的获取和释放,从而避免资源泄露或未正确关闭的问题。类是一个典型的RAII(Resource Acquisition Is Initialization)模式的实现,专门用于管理。是一个非常有用的工具,它利用了C++的RAII特性来自动管理线程的生命周期,从而简化了多线程编程中的资源管理问题。原创 2024-12-12 15:59:59 · 666 阅读 · 0 评论 -
量产线程,并等待它们结束工作
【代码】量产线程,并等待它们结束工作。原创 2024-12-13 23:05:38 · 442 阅读 · 0 评论 -
scoped_thread类
【代码】scoped_thread类。原创 2024-12-13 22:43:54 · 281 阅读 · 0 评论
分享