读写锁
#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(
(HANDLE)_beginthreadex(NULL, 0, WriteThread, NULL, 0, NULL) );
system("pause");
return 0;
}
条件变量
SleepConditionVariableSRW 可以递归调用,但是最后需要释放一次
#include <Windows.h>
#include <tchar.h>