面试时遇到的问题,mutex的实现原理是什么?

为什么在lock时,其他线程就没法获取该锁#C/C++##悬赏#
全部评论
原子操作判断是否已被锁,具体可以搜索下相关资料
点赞 回复
分享
发布于 2019-07-06 11:21
Mutex是一个结构体,里面包含了一个等待队列头,一个原子变量,一个自旋锁。工作机制可以差一下linux源码,
点赞 回复
分享
发布于 2019-07-06 11:22
联想
校招火热招聘中
官网直投
锁的value如果非0,其他线程到临界区的时候会被futex调用进入休眠,mutex.value为0时唤醒线程,从内核总线调用改为futex可避免频繁上下文切换
点赞 回复
分享
发布于 2019-07-06 11:27
unix和linux实现方式不一样
点赞 回复
分享
发布于 2019-07-06 11:27

相关推荐

腾讯安全部门的一面挂了之后又被微信&视频部门捞起来了,遇到一个超好的面试官,是个紧跟新技术的大佬,给我发了个LRU算法的新技术,还介绍了最新的HTTP3.0协议,感觉学到了很多,希望后面能有好运气!1. 面试官部门介绍,在广州,主要做各种平台客户端的开发2. 自我介绍+项目介绍3. 项目追问1:页面置换算法有哪几种?FIFO,LRU,  Clock(两种,访问位,修改位),LRU-2/2Q4. 项目追问2:LRU算法具体实现细节,怎么进行插入删除的操作,怎么进行查找?使用哈希表存储页号与链表节点的映射,方便确定节点位置。访问一个页面的过程。5. 项目中使用了多线程,那怎么保证线程同步的?mutex,look_gurd 怎么用的?两个线程同时访问一个函数,冲突,线程同步6. 项目中有没有考虑使用信号量?进程同步问题。粗粒度锁,细粒度锁。7. 有没有玩过游戏?比如王者荣耀,你觉得王者荣耀应该用TCP还是UDP? 答:UDP,保证实时性。那如果是击杀数这种比较重要的数据怎么办?答:可以TCP和UDP联合使用,不重要的渲染数据可以使用UDP,重要的使用TCP。面试官介绍了另一种方案:HTTP3.0,UDP实现可靠传输,重传机制等。 8. TCP怎么保证可靠性的?拥塞控制,滑动窗口机制。具体原理是什么?9. 数据库索引的作用?索引越多越好吗?10. 算法题1:怎么判断一个链表是否有环?快慢指针11. 算法题2:给定一个二维数组,每行从小到大排序,每列也是从小打到排序,给定一个target,怎么判断这个数组中是否存在这个target?先按每列末尾数字二分查找,再按确定的行二分查找。12. 算法题3:怎么找到一个数组中的第k大的数?快速排序找到第k大的数。不能直接改变数组元素顺序要怎么找?对前k个元素建立小顶堆,后面的元素与堆顶元素比较,如果大于堆顶元素,则将其替换,并调整堆。堆是怎么建立的?可以通过数组建立吗?怎么调整堆?13. 反问:为应对这个岗位以及后续的面试,在知识储备方面有什么需要加强的? 更新------又挂了😥#我的实习求职记录#
点赞 评论 收藏
转发
点赞 11 评论
分享
牛客网
牛客企业服务