一个工作2年的C++程序员要求2w月薪
- dkxw多线程一定要volatile? boost的lock, mutex, condition,automic这些足够了。volatile效率可能稍微高一点,但可读性明显比这些明确锁定和原子操作的方式要差。面试出这种问题纯粹是个人喜好,问一些数据结构和算法问题更实际一些。
volatile不能避免对变量运算的时候变量被其他线程改变,绝大部分情况下仍然不能替代lock和interlock哪些函数,只在刚工作的时候做多线程用过一次,是想提高一下效率,现在想起来觉得那样写比较操蛋,让别人看到这种代码会比较疑惑。 - devlietstl atomic底层实现用到了volatile吧。
不然无法确保值从寄存器刷新到内存,也无法确保从内存读取而不是从寄存器cache里读取。
本帖最后由 devliet 于 2019-3-9 15:15 通过手机版编辑 - henvelleng说底层实现就没意思了,基本上锁的底层必然要用volatile
这就如同单片机访问寄存器到底要不要用volatile一样,我还真记错了,答案是一样要用,只是我们基本上都在用hal库或标准库以及更高层次的封装,所以往往接触不到
volatile效率也未必高,我记得原理是使用最保守的cpu cache机制,而cache机制的组合往往多达七八种
使用多线程也不都是出于性能考虑,业务逻辑就决定了必须有并发,而且Linux下都倾向于更安全的多进程机制了。单片机不跑os更是连进程线程的概念都没有 - mjnaurvolatile不就是访问数据时bypass掉cache嘛,多线程下一些敏感数据肯定要用的。
这概念真的算简单的了,尽管未必每个写过几年c艹的人都用过啦,主要还是要看做什么项目和负责什么模块 - lewx说明工具方便啊
- mitaosi我虽然工作不用C艹,不过C艹实现多线程的方式很多不止volatile这点还是知道的,上学的时候做嵌入式项目用到过,你该回复我引用的那位 XD