面试笔试题记录
2015-09-21 20:04
344 查看
数据库有x锁及s锁,请问如何用C++实现这种类似的读写锁。
远景能源的一面题目。解决方法如下:
用两个锁,一个mutex mlock一个semophore semlock,假设semlock初始为64,即最多不会超过64条线程同时做读写操作。
s锁(即读锁)的实现如下:
req semlock 1;//请求一个信号量资源(总共有64个资源)
do reading;
release semlock 1;
x锁(即写锁)的实现如下:
req mlock;
req semlock 64;//请求全部64个信号量资源(总共有64个资源)
do writing;
release semlock 64;
release mlock;
这样当有用户在read时,write无法获得全部64个资源,故被锁住。同理,当write正在进行时,全部64个资源都被占用,read无法请求到任一资源,被锁住。现在请思考,为什么需要mlock?(提示:死锁)
远景能源的一面题目。解决方法如下:
用两个锁,一个mutex mlock一个semophore semlock,假设semlock初始为64,即最多不会超过64条线程同时做读写操作。
s锁(即读锁)的实现如下:
req semlock 1;//请求一个信号量资源(总共有64个资源)
do reading;
release semlock 1;
x锁(即写锁)的实现如下:
req mlock;
req semlock 64;//请求全部64个信号量资源(总共有64个资源)
do writing;
release semlock 64;
release mlock;
这样当有用户在read时,write无法获得全部64个资源,故被锁住。同理,当write正在进行时,全部64个资源都被占用,read无法请求到任一资源,被锁住。现在请思考,为什么需要mlock?(提示:死锁)
相关文章推荐
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- C#常见算法面试题小结
- php 面试碰到过的问题 在此做下记录
- asp.net 面试+笔试题目第1/2页
- asp.net 面试 笔试题目[附答案]第1/3页
- 面试:(设计,架构)
- PHP中级面试经历
- 戴维营教育2015年iOS暑期班笔试面试基础考核题
- 程序员编程面试取胜的8个技巧
- PHP相关面试中最经常涉及的12个问题
- 面试时,你会问面试官哪些问题?
- asp.net面试中的四十一个经典题目
- 网络工程师面试常见问题
- 腾讯社招面试经历
- java基础面试题 - java基础(1)
- 2013阿里巴巴安全工程师实习生招聘笔试小结
- 工作流引擎面试记录及未来发展
- 3个CCIE对一个工程师的面试题
- 今天面试IBM CSDL
- 职场动态赢得面试机会的8个技巧