Windows核心编程之 用户模式下的线程同步 读写锁和条件变量

 读写锁

#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>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值