读写锁的数据结构: typedef struct RWLOCK_st{ LOCK ReadLock; LOCK WriteLock; UINT uReadcount; }RWLOCK; //读操作保护的伪代码 RWLock_LockRead() { 上锁锁住计数器变量的读写 计数器加 1 if(计数器的值为 1) { 上锁写住写操作 } 解锁计数器变量的读写 } RWLock_UnlockRead() { 上锁锁住计数器变量的读写 计数器减 1 if(计数器的值为 0) { 解锁写操作 } 解锁计数器变量的读写 } //写操作保护的伪代码 RWLock_LockWrite() { 上锁锁住写操作 } RWLock_UnlockWrite() { 解锁写操作 } 注意事项:1)开销大 2)读操作比较频繁时,计数uReadCount可能一直无法归零,会导致写操作无法进行,从而出现写操作饿死现象