- 1.看过哪一部分内核代码
- 2.自己有动过内核吗
- 3.读写锁在源码里有看到过吗
- 4.实现下读写锁
用两个变量实现:
int readcount = 0, writecount = 0;
void writelock()
{
if (writecount > 0)
wait(); // 有其他进程在写,自己不能写
// 先加1,再开始读,可以避免出现饿死的情况
//
++writecount;
if (readcount > 0)
wait(); // 有其他进程读,自己不可写
writesomething();
}
void readlock()
{
if (writecount > 0)
wait(); // 有其他进程写,自己不能读
++readcount;
readsomething();
}
void writeunlock()
{
if (writecount > 0)
--writecount;
}
void readunlock()
{
if (readcount > 0)
--readcount;
}
// 想得有点久,单个变量count,那么count<0时读,>0时写,这是基本情况
void writelock()
{
// 忘了
if (count
}