logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【Qt实战】工业级多线程串口通信:从底层协议设计到完美收发闭环

本文总结了一套工业级Qt多线程串口通信架构,解决了常见开发痛点。首先强调对象依附性(Thread Affinity)问题,指出对象必须在其"户口"所在线程操作,并给出正确实例化方式。其次,通过#pragma pack和固定数据类型确保协议封包准确性。发送环节提出同步发送三部曲,包含强制发送(waitForBytesWritten)和节奏控制。最后展示了一个完整的run()循环架

#qt#linux#c++
epoll 学习记录:ET 都“只通知一次”了,为什么还必须设置非阻塞?

摘要: ET(边缘触发)模式的核心特性是"只通知一次",要求必须一次性处理完所有可用数据。但关键在于必须配合非阻塞IO,原因在于: ET模式下,若未读空缓冲区,可能丢失后续通知 非阻塞IO通过EAGAIN错误码标识"读空"状态 阻塞模式下read/accept会卡死线程,无法实现"读空即停" 正确做法是:设置O_NONBLOCK标志,循环

#学习#网络#服务器
Linux `epoll` 学习笔记:从原理到正确写法(含 ET 经典坑总结)

本文总结了Linux epoll的核心知识点与常见误区。首先对比了epoll与select/poll的性能差异,指出epoll通过内核维护就绪队列实现高效事件通知。接着详细解析epoll三大API的正确用法,包括epoll_create1参数设置、epoll_ctl操作和epoll_wait使用。重点分析了LT与ET模式的区别,强调ET模式必须配合非阻塞IO,必须循环读取直到EAGAIN。文章还提

#linux#服务器#c++ +2
epoll 学习踩坑:`fcntl` 设置非阻塞到底用 `F_SETFL` 还是 `F_SETFD`?

摘要: 在使用epoll的ET模式时,必须正确设置文件描述符为非阻塞(O_NONBLOCK)。常见错误是误用fcntl的F_SETFD参数(用于设置文件描述符标志如FD_CLOEXEC)而非F_SETFL(用于设置文件状态标志如O_NONBLOCK)。错误操作会导致程序阻塞或事件丢失。正确写法应通过F_GETFL/F_SETFL设置非阻塞,并通过循环读取直到EAGAIN确保ET模式正常工作。推荐封

#tcp/ip#网络#服务器 +2
一文吃透 Linux 进程:从 PID、PCB 到僵尸回收、fork/exec、守护进程

本文全面介绍了Linux进程管理的核心概念与实践技巧。主要内容包括:进程基本概念(PID/PPID/PCB)、进程状态与生命周期管理(fork/exec/exit/wait)、僵尸进程的成因与解决方案、信号处理与环境变量操作、I/O重定向与管道通信、守护进程创建的关键步骤,以及进程调度优先级相关的nice值和实时调度策略。文章还提供了常用监控工具(如ps/top/strace/lsof)和最佳实践

#linux#服务器#ubuntu +2
Qt 中工具窗体与普通窗体在任务栏中的区别

普通窗体(Main Window)普通窗体是应用程序的主要窗口,通常是用户与应用程序交互的主要界面。Qt 提供了类,用于创建和管理应用程序的主界面。菜单栏:通常包含应用的文件、编辑、视图等菜单项。工具栏:包含常用的工具按钮。状态栏:用于显示应用的状态信息(如进度条、提示信息等)。主工作区域:显示应用程序核心功能的区域。普通窗体的特点是它通常占据大部分屏幕,并且是用户操作的核心界面,具有完整的窗口控

文章图片
#qt#开发语言
C++错误总结

string x;//品种 float y;//重量 float j;//长度 };"草鱼" };return 0;}这是报错的源代码,编译器没有任何报错,但是一编译就出问题,我看了半天才发现原来是struct中的string 前面没有加std::以为我在mani函数前加了using namespace std;但是我定义struct的时候定义在了using namespace std;前面,所以

文章图片
#c++
到底了