![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
折花刀
勤能补拙是良训,一份辛苦一份才
展开
-
进程切换的开销为什么比线程更大
进程有独立的地址空间,进程切换时需要切换地址空间的映射关系,这涉及到页表的切换和 TLB(Translation Lookaside Buffer)的刷新等操作,开销较大。由于进程具有独立的地址空间和资源,进程切换需要考虑安全性和隔离性,例如需要刷新 TLB、清理缓存等,增加了切换的开销。线程切换只需要保存和恢复线程的上下文信息,相对于进程来说,线程的上下文信息更少,因此线程切换的开销较小。进程有独立的资源,包括文件描述符、打开的文件、信号处理器等,进程切换时需要切换和管理这些资源,开销较大。原创 2024-01-18 11:17:32 · 889 阅读 · 0 评论 -
rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread) has assert failed at原因分析
rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread) has assert failed at原创 2022-06-24 16:24:22 · 2960 阅读 · 0 评论 -
fopen/fread对比open/read线程安全性分析
fopen,fread与open,read分别属于两套接口,open,read更偏底层属于系统调用在项目中用到了fopen,fread,fseek组合使用时,存在线程安全问题,需要加锁,也就是lock() //加锁fopenfseekfreadfcloseunlock() //解锁原因是每个线程fopen时都会有一条独立的IO流,但是这些IO流在底层缓存时存在线程安全的问题相比起来open,read接口组合使用时,就不存在线程安全的问题,已经测试过,不需要加锁...原创 2021-11-23 17:44:16 · 2158 阅读 · 0 评论 -
rtthread dcm组件dcm_cache_save接口mkdir:/data failed解决办法
项目中用到了了rtthread dcm 数据持久化组件,但是在dcm_cache_save时报mkdir:/data failed但是这个错误日志不是本项目的代码,经确认是dcm接口内部打印的日志然后确认了宏#define DCM_DEFAULT_STORAGE_NAME "/user/data/db/dcm" 在rtconfig.h中已经声明,同时业务代码在系统启动时也有用到该宏最后排查是因为dcm_default_storage_name在系统启动时需要赋值,dcm组件的dcm_strg原创 2021-11-09 16:23:48 · 399 阅读 · 0 评论 -
keil 编译链接时报错误代码L6286E解决办法
用网上很多办法没有解决最后,修改keil的编译选项为-O1解决问题我的keil版本是5.33 如下图所示原创 2021-11-01 21:21:54 · 1972 阅读 · 0 评论 -
librws是如何发送报文的------之rws_socket_connect详解
librws是小型跨平台websocket客户端C库因为分析rws_socket_send_text函数时,只看到时给socket结构体的的send_frames添加节点,没看到发送的代码,实在太疑惑,于是分析了下librws的代码,找到了原因下边分析下rws_socket_connect函数rws_socket_connect函数最后return rws_socket_create_start_work_thread此函数中会创建一个线程rws_socket_work_th_func.原创 2021-10-18 20:35:28 · 803 阅读 · 3 评论 -
RTThread工作队列详解
RT-Thread-RT-Thread workqueue 详解RT-Thread问答社区 - RT-Thread转载 2021-10-11 20:54:45 · 687 阅读 · 0 评论 -
linux命令
du -s * | sort -nr | head //查看哪个文件占用磁盘最大原创 2017-05-09 14:06:36 · 265 阅读 · 0 评论 -
vim 文件中所有相同单词 查找/替换/删除 ,对一个单词做某操作,对其余单词也做某操作
vim 常用单词操作方法原创 2017-01-12 17:22:02 · 10273 阅读 · 0 评论 -
编译多路径/目录源代码并生成多个可执行文件的makefile实例
all:BLD_DIR = ./buildINCLUDE_DIR = ./lib/includeSRC_DIR = ./lib/srcInitMake := $(shell [ -d $(BLD_DIR) ] || mkdir -p $(BLD_DIR))EXES = list_sort bit_sortall:$(EXES)CC = gccOBJ原创 2017-01-18 14:43:44 · 1179 阅读 · 0 评论 -
c++ 一个经典的makefile实例 g++ (8.1是目标文件)
all:CC = g++BLD_DIR = ./buildInitMake := $(shell [ -d $(BLD_DIR) ] || mkdir -p $(BLD_DIR))EXES = 8.1SRCS = $(wildcard *.cpp)OBJS = $(SRCS:%.cpp=$(BLD_DIR)/%.o)DEPS = $(SRCS:%.cpp=$(BLD_DIR)原创 2017-01-11 13:25:42 · 1248 阅读 · 0 评论 -
一个经典的Makefile实例
all:BLD_DIR = ./build InitMake := $(shell [ -d $(BLD_DIR) ] || mkdir -p $(BLD_DIR)) EXES = recv sendSRCS = $(wildcard *.c)OBJS = $(SRCS:%.c=$(BLD_DIR)/%.o)DEPS = $(SRCS:%.c=$(BLD_DIR)/%.d)原创 2017-01-11 10:13:38 · 488 阅读 · 0 评论 -
vim 格式化代码
vim 格式化代码原创 2017-01-11 09:55:10 · 265 阅读 · 0 评论