操作系统
文章平均质量分 53
The Goat
God of coding
展开
-
原子操作与无锁编程
原子操作 CAS操作 原子操作能替代锁么 以上信息需要后续深入理解,目前只是简单了解原创 2021-02-09 16:32:52 · 473 阅读 · 0 评论 -
多线程 浅谈条件变量
条件变量,cond wait过程中:存在: 调用wait前加锁 while判断并调用wait, wait内部解锁, wait收到信号后重新加锁\这几步操作, 即:在cond wait前,需要加锁,wait时,会把自己放到唤醒队列中,并释放锁;当生产者发来cond signal信号后,该cond wait操作会再次加锁,然后执行对临界资源的操作 条件变量有两点需要注意: 条件变量要和锁结合起来使用 条件变量要用while循环来判断条件是否成立,而不能用if语句来判断 关于以上两点的解释,可以参考:多线原创 2021-02-05 16:25:05 · 457 阅读 · 0 评论 -
[转]基于C++11的线程池(threadpool),简洁且可以带任意多的参数
参考:基于C++11的线程池(threadpool),简洁且可以带任意多的参数 本人解读: 用一个vector保存N个线程,这个vector就成了一个线程池。每个线程,都会通过一个while(!stop)的循环,轮寻task,当有task来临时,就会执行task。当没有task时,线程会wait,阻塞住,等待task来临。 task有一个队列,每当新task来临时,会入队,同时,会noti...原创 2020-01-19 16:58:12 · 340 阅读 · 0 评论 -
同步、异步、阻塞、非阻塞之间的区别
个人理解: 首先涉及两个对象:调用方 和 被调用方。 阻塞非阻塞是指调用方的态度; 同步异步是被调用方的特征; 从大的概念上来讲同步和异步关注的是消息通信机制,阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态. 比如程序(调用方)调用某个函数A(被调用方): 针对A函数,若A函数必须要执行完才返回,则是同步调用;若A立刻返回,后面得到具体结果后在通知程序,则是异步调用。 针对调用方...原创 2020-01-19 11:20:34 · 186 阅读 · 0 评论 -
为什么寄存器比内存快?
计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。 同样都是晶体管存储设备,为什么寄存器比内存快呢? Mike Ash写了一篇很好的解释,非常通俗地回答了这个问题,有助于加深对硬件的理解。下面就是我的简单翻译。 原因一:距离不同 距离不是主要因素,但是最好懂,所以放在最前面说。内存离CPU比较远,所以要耗费更长的时间读...原创 2019-11-19 10:02:44 · 285 阅读 · 0 评论