线程

wuchen10043 天前
线程·异步·队列·网狐
网狐的两种异步处理机制的理解前几天发了两篇博文,记述的是 通过“消息窗口 + 工作线程 + 队列”实现的异步引擎:https://blog.csdn.net/wuchen1004/article/details/158394256?spm=1011.2124.3001.6209
柏木乃一5 天前
linux·运维·服务器·c++·单例模式·操作系统·线程
Linux线程(8)基于单例模式的线程池1.单例模式的线程池在前面,我们通过匿名管道实现过主从模式的进程池,但是对于进程来说,它的消耗相对于线程来说,是非常的大的.它不仅需要创建内核的数据结构,同时也需要拷贝处一份虚拟地址空间.光着两项它,就已经占了不少的内存和时间了. 我们进行选择实现的线程池,它都是在一个进程内部的执行流.用同一个虚拟地址空间.能够更加轻量的去完成任务.因为对于线程来说,它主要是在用户态就能跑完,也不需要过多的系统调用. 着也就导致了,它并不会占用过多的内核资源. 对于线程池,我们同样,会在任务到来之前启动一批线程.在任务没
柏木乃一6 天前
linux·运维·服务器·c++·线程·策略模式
Linux线程(7)基于策略模式的日志模块1.日志在前面,我们在多线程的情况下,对于一些结果打印,往往会出现错乱的问题.这些因为在我们Linux当中始终遵循一个规则,就是一切皆文件.我们需要向显示器文件进行写入我们的日志信息.但是在多线程的情况下.我们每个线程都回会向显示器文件进行写入,如果没有进行对共享资源的保护进行这样就会出现数据不一致的问题.为了解决这个问题我们要设计一个拥有锁进行保护的日志模块. 对于市面上有很多成熟的日志模块.spdlog、glog、Boost.Log、Log4cxx等等,但是我们要去深入的了解这个东西最好的方法还是自己
柏木乃一7 天前
linux·运维·服务器·c++·分布式·线程·生产消费
Linux线程(6)生产消费者模型1.生产消费者模型概述 2.基于阻塞队列的生产消费者模型 2.基于环形队列信号量的生产消费模型我们的线程同步与互斥,主要是在多线程当中,用来处理多线程调度的问题.而我们线程创建出来和进程的目标是一致的都是完成任务.但是在线程中难免会遇到生产数据和消费数据是混杂的.为了解决这个问题.我们将生产消费这种强耦合的问题,通过一种容器将其分为两个部分进行解耦.我们就称之为生产消费者模型,因为我们将生产和消费分为了两个部分.我们也就能够让生产消费同时进行.也就是生产消费者模型是能够支持并发的 对于生产消费者模型.我们
柏木乃一7 天前
linux·运维·服务器·c++·线程·posix
Linux线程(2)线程的优点和缺点/线程异常/posix线程库原理1.线程的优点和缺点 2.线程异常 3.同进程下的多线程共享 4.posix线程库原理在前面我们聊过了什么是线程,在Linux当中线程是如何实现的.但是与进程相比,线程它有哪些好处和缺点呢?
青桔柠薯片21 天前
linux·开发语言·线程·进程
Linux软件编程:线程和进程间通信线程作为轻量级进程,在操作系统层面具有独特的地位。从资源分配视角观察,线程完全寄生在进程空间内部,每个线程拥有独立的栈区(默认8M),而文本段、数据段和堆区则在同进程的多线程间共享。这种共享机制决定了线程间通信的高效性,同时也带来了资源竞争的风险。
_OP_CHEN21 天前
linux·运维·操作系统·线程·进程·c/c++·线程控制
【Linux系统编程】(四十)线程控制终极指南:从资源共享到实战操控,带你吃透线程全生命周期在 Linux 多线程开发中,“线程控制” 是贯穿始终的核心技能 —— 从线程的创建、终止,到等待、分离,每一步操作都直接影响程序的性能、稳定性和资源利用率。而要熟练掌握线程控制,首先必须理清一个关键问题:进程和线程究竟哪些资源共享、哪些资源独占?这是理解线程控制逻辑的底层基石。
嵌入小生00721 天前
linux·嵌入式·线程·软件编程·僵尸线程·马年开工第一学·线程属性
线程(2)/ 线程属性 /相关函数接口--- 嵌入式(Linux)✨ 马年开工第一学,不负时光,不负成长!跟着博主一起深耕Linux线程编程,从基础到实战,吃透线程属性的核心用法,避开开发中的常见坑,加油冲起来~
’长谷深风‘22 天前
c语言·开发语言·线程·进程·软件编程
线程函数接口和属性一、线程函数接口2、pthread_exit原型:void pthread_exit(void *retval); 功能: 结束线程任务 参数: retval:线程结束时的值 返回值: 缺省
_OP_CHEN23 天前
linux·运维·操作系统·线程·进程·多线程·c/c++
【Linux系统编程】(三十九)吃透线程概念:从底层原理到实战应用前言一、什么是 Linux 线程?打破你的固有认知1.1 线程的内核定义:进程内部的控制序列1.2 线程的本质:进程资源的合理划分
兵哥工控25 天前
c++·mfc·线程
mfc 线程启动、挂起、恢复、停止实例创建一个简单的MFC对话框应用程序,其中包含几个按钮来控制线程的创建、挂起、恢复、结束和等待退出。 注意:在VC6.0中,我们需要使用AfxBeginThread来创建工作者线程,并确保线程安全退出。 我们将创建一个工作者线程函数,该函数将执行一个循环,直到收到退出信号。 同时,我们将在对话框类中管理线程句柄和状态。 步骤: 创建一个MFC对话框应用程序。 在对话框上添加按钮:开始、挂起、恢复、结束、退出。 在对话框类中添加线程句柄和事件(或标志)用于控制线程退出。 实现工作者线程函数,该函数循环检查退出
嵌入小生0071 个月前
linux·vscode·vim·嵌入式·线程·进程
线程 --- 嵌入式(Linux)线程是进程内的最小执行单元,也被称为轻量级进程(LWP)。一个进程可以包含多个线程,所有线程共享进程的核心资源,同时拥有自己独立的执行上下文(如程序计数器、寄存器、栈)。
’长谷深风‘1 个月前
c语言·开发语言·线程·进程
进程和线程接上节进程一、函数接口1、exit原型:void exit(int status); 功能: 让进程结束 在主函数中调用exit和return效果相同
HalvmånEver1 个月前
linux·运维·服务器·线程·同步
Linux:线程同步线程互斥解决了 “临界资源不冲突” 的问题,但无法保证线程执行顺序。在实际场景中,我们常需要线程按特定逻辑协同工作(如生产者生产数据后,消费者才能消费),这就需要线程同步技术。本文带你理解线程同步的本质、核心工具(条件变量、信号量)及经典应用场景
我是阿亮啊1 个月前
android·线程·进程·进程间通信
Android 中线程和进程详解原因:解决:
HalvmånEver2 个月前
linux·运维·服务器·操作系统·线程
Linux:线程 ID 与地址空间布局:深入理解线程内存分布(线程七)Linux 中有两种线程 ID:用户态线程 ID(pthread_t)和内核态线程 ID(tid),前者是进程内唯一的虚拟地址,后者是系统全局唯一标识。线程的地址空间布局中,主线程栈在栈区,子线程栈在共享区(mmap 映射),所有线程共享代码段、数据段、堆等资源。
晚风吹长发2 个月前
linux·运维·服务器·开发语言·c++·centos·线程
初步了解Linux中的线程概率及线程控制既然说到了线程,我们首先应该知道什么叫做线程,我们已经知道了进程有我们的PCB+数据和代码,还有进程地址空间等,而线程我们可以看作是在一个进程中除了PCB外共用其他数据的一个进程,也就是说我们的进程拥有独立的PCB,除此之外其他的都是用的进程的。如下图所示,我们拥有的每一个线程都有一个task_struct结构体,但是他们共用了一个进程地址空间,一个页表等。所以我们把线程也称作轻量级进程。所以我们之前学到的进程,可以看作是只有一个PCB的线程。所以我们重新定义进程和线程之间的概率。进程:是操作系统承担分配
Trouvaille ~2 个月前
linux·运维·服务器·c++·算法·线程·互斥锁
【Linux】线程同步与互斥(一):线程互斥原理与mutex详解💬 重磅来袭:前面的文章把线程创建、管理、内存布局都讲清楚了,线程能跑了。但多个线程一起跑,马上就会遇到新麻烦:它们要访问同一份数据怎么办?比如售票系统,四个窗口同时卖票,票数是共享的,不加控制就会卖出负数票。这就是本篇要解决的核心问题——如何让多个线程安全地访问共享资源。我们会从一个会出错的售票代码开始,看看数据竞争是怎么发生的,然后引入互斥锁(mutex)来解决问题,最后深入到汇编层面理解为什么需要原子操作,并用RAII风格封装出好用的锁工具。
海市公约2 个月前
线程·进程·协程·python 多任务编程·协程异步 io·python 爬虫实战·python 并发实战
Python 多任务编程全解:进程、线程与协程从入门到实战在日常开发中,“让程序同时干多件事” 是提升效率的核心需求 —— 比如一边下载文件一边处理数据,或是批量爬取网页。Python 提供了进程、线程、协程三种多任务实现方式,它们各有适用场景与优劣。本文从基础概念出发,结合代码实例拆解这三种技术的用法、注意事项与实战场景,帮你掌握 Python 多任务编程的核心逻辑。
linweidong2 个月前
stl·vector·线程·内存管理·c++20·c++面试·c++调用
虎牙C++面试题及参考答案(上)extern 关键字在 C/C++ 中是核心的链接属性说明符,核心作用是声明变量或函数的作用域为外部链接,即该变量 / 函数的定义并非在当前编译单元(.c/.cpp 文件)中,而是存在于其他编译单元,编译器编译当前单元时不会为其分配内存或生成函数体,仅做语法校验,链接阶段由链接器从其他编译单元中找到对应的定义并完成关联。同时 extern 也可用于声明全局变量,避免因重复定义导致的链接错误 —— 全局变量若仅声明不定义(加 extern),可在多个编译单元中存在,而定义(不加 extern)只能出现在一个