![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
[软件开发]common
文章平均质量分 68
common
贺二公子
这个作者很懒,什么都没留下…
展开
-
mmap:文件映射进内存,及window上的对应方法
mmap转载 2017-03-08 16:02:10 · 6596 阅读 · 0 评论 -
关于可重入性函数
可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入 函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。转载 2023-04-04 11:35:28 · 67 阅读 · 0 评论 -
可重入函数,线程安全函数与异步信号安全函数
Reentrancy、Thread-safe、Async-signal-safe以前写C代码,**多核多线程下时,要注意函数的可重入性,保证线程安全,**即多个线程同时调用到此函数,其结果是可预期的(固定输入,固定输出),全局变量的使用需要注意加锁,线程函数中写操作必须要加锁,读操作则看实际情况来定,如果能确认业务整体逻辑上能保证写和读是有严格时序的,不需要对读进行加锁(比如写只在模块最开始初始化时完成,其他地方只是使用,不会修改,则可以读取时不需要锁)。源于《Unix系统高级编程》一书中12.6章节示例转载 2022-07-13 20:56:35 · 464 阅读 · 1 评论 -
bss段、data段和text段
在采用段式内存管理的架构中(比如intel的80x86系统),一个程序本质上都是由 bss段、data段、text段三个组成的。比如,在C语言程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。发现程序2编译之后所得的.exe文件比程序1的要大得多。转载 2023-04-04 11:10:49 · 289 阅读 · 0 评论 -
inline内联函数(声明前加inline还是定义前加inline)
inline转载 2016-06-18 14:47:15 · 12249 阅读 · 0 评论 -
状态机的两种写法对比
上面横竖两种写法的代码片段,实现的功能完全相同,但是,横着写的效果明显好于竖着写的效果。竖着写隐含了优先级排序(其实各个事件是同优先级的),排在前面的事件判断将毫无疑问地优先于排在后面的事件判断。这种if/else if写法上的限制将破坏事件间原有的关系。而横着写不存在此问题。由于处在每个状态时的事件数目不一致,而且事件发生的时间是随机的,无法预先确定,导致竖着写沦落为顺序查询方式,结构上的缺陷使得大量时间被浪费。转载 2023-04-04 10:52:45 · 188 阅读 · 0 评论 -
优秀程序员不得不知道的20个位运算技巧
一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker’s Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一个普通的程序中大量运用这样的代码的人简直是疯了!转载 2023-04-04 10:39:33 · 79 阅读 · 0 评论