读写锁
#include <Windows.h>
#include <tchar.h>
#include <stdio.h>
#include <process.h>
#include <winbase.h>
// 读写锁
SRWLOCK srwLock;
unsigned WINAPI ReadThread1(LPVOID)
{
while(1)
{
AcquireSRWLockShared(&srwLock);
printf("read 1111\n");
ReleaseSRWLockShared(&srwLock);
Sleep(500);
}
return 0;
}
unsigned WINAPI ReadThread2(LPVOID)
{
while(1)
{
AcquireSRWLockShared(&srwLock);
printf("read 2222222222\n");
ReleaseSRWLockShared(&srwLock);
Sleep(500);
}
return 0;
}
unsigned WINAPI WriteThread(LPVOID)
{
while(1)
{
AcquireSRWLockExclusive(&srwLock);
printf("write\n");
ReleaseSRWLockExclusive(&srwLock);
Sleep(1000);
}
return 0;
}
int main()
{
InitializeSRWLock(&srwLock);
CloseHandle(
(HANDLE)_beginthreadex(NULL, 0, ReadThread1, NULL, 0, NULL) );
CloseHandle(
(HANDLE)_beginthreadex(NULL, 0, ReadThread2, NULL, 0, NULL) );
CloseHandle(

本文深入探讨Windows核心编程中的用户模式线程同步,重点讲解了读写锁和条件变量的使用。通过示例代码展示了如何正确利用SleepConditionVariableSRW进行递归调用,并强调了在完成操作后释放锁的重要性。
最低0.47元/天 解锁文章
541

被折叠的 条评论
为什么被折叠?



