- 博客(13)
- 收藏
- 关注
原创 Windows环境下CTRL+C信号处理函数的执行线程
有时候我们希望自己的程序被CTRL+C以后,可以先执行一些收尾的工作才结束,比如释放动态内存,关闭网络端口、保存一些状态日志等等,可以用到C++的signal的机制。因为这个问题会牵涉到在信号处理函数的实现里面我们需不需要考虑临界资源保护和死锁。在截图中,主线程ID是1148,而信号处理函数的执行线程ID是7304。然后当程序运行期间,我们向终端输入CTRL+C的时候,例程sigint_handler就会执行。WINDOWS给我们开辟了一个新的线程去执行信号(CTRL+C)处理函数。
2024-10-10 15:25:38
1185
1
原创 VS开发 - 静态编译和动态编译的基础实践与混用
DLL则是动态库,选择动态链接的时候,EXE需要用到C/C++库函数的实现的时候,会去系统里面找相对应的DLL。其中.LIB是静态库,假如我们程序用.LIB去链接的话,意味着这个EXE里就包含了C/C++库函数的实现,运行的时候就不需要再依赖目标电脑上的运行库,方便拿到其他电脑跑。链接阶段,main.obj会找到msvcprtd.lib里面关于cout的符号,也发现my-mtd-lib.lib也带了来自libcpmtd.lib的cout的符号,所以报重定义。,为什么动态生成的依赖库只有lib。
2024-09-29 23:21:48
1674
原创 STM32第一坑:ST-LINK无法连接MCU
首先说一下我的硬件:烧录器:ST-LINK V2单片机:STM32F030RCT6使用STM32 ST-LINK Utility烧录,死活连不上,提示Can not connect to target! Please select "Connect Under Reset" mode from Target->Settings menu and try again. ...
2020-03-11 16:19:42
33534
12
原创 【duilib进阶】自定义控件响应指定命令
继承需要的控件,然后覆盖它的虚函数virtual void DoEvent(TEventUI& event),调用SendNotify函数,把要处理的事件告诉UIManager。
2016-03-01 15:23:52
2274
原创 【源码分析】redis网络通讯并发架构简介
文章分成两部分,第一部分是对Redis所用的事件驱动模型的原理的讲解,第二部分采用跟踪关键代码的形式去探究客户端-服务端是怎么使用这个框架进行通讯的。
2016-02-25 09:17:44
589
原创 我的命名习惯
其实从读书开始我就觉得命名是个很纠结的事情,再加上我有比较严重的强迫症,看不顺眼的命名我会一直惦记着,很难集中精神去进行下一步的工作,所以其实名字起的好的话工作效率很提高得很明显,很有必要规范一下,减少纠结的时间。...
2016-02-11 21:13:25
363
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人