0、思考
如果写线程被阻塞期间不断的有读线程请求共享式访问共享资源,到底该不该予以访问权限呢?
1、相关api
SRWLOCK
InitializeSRWLock
AcquireSRWLockExclusive
AcquireSRWLockShared
ReleaseSRWLockExclusive
ReleaseSRWLockShared
2、写在前面
独占式访问:写线程访问共享资源的方式;
共享式访问:读线程访问共享资源的方式;
当有读线程访问资源时,写线程等待访问时,新的读线程因为有写线程等待所以不允许访问。(保证读写的公平)
3、api说明
typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
typedef struct _RTL_SRWLOCK {
PVOID Ptr;
} RTL_SRWLOCK, *PRTL_SRWLOCK;
// 初始化读写锁
WINBASEAPI
VOID
WINAPI
InitializeSRWLock (
__out PSRWLOCK SRWLock
);
// 独占式访问
WINBASEAPI
VOID
WINAPI
AcquireSRWLockExclusive (
__inout PSRWLOCK SRWLock
);
// 共享式访问
WINBASEAPI
VOID
WINAPI
AcquireSRWLockShared (
__inout PSRWLOCK SRWLock
);
// 独占式释放
WINBASEAPI
VOID
W