操作系统:VC的PV原语操作模拟,可完全按照操作系统原理教材实现PV原语操作,各位觉得怎样,请提建议

[复制链接]
查看11 | 回复3 | 2021-1-27 06:17:32 | 显示全部楼层 |阅读模式
#include"stdafx.h"
#include
//###########################################################################
//使用方法:
//1声明一个Semaphore
#defineDECLARE_SEMAPHORE(_hSemaphore)HANDLE_hSemaphore;
//2初始化一个Semaphore,初值是_initCount,最大值是_hSemaphore;
#defineINIT_SEMAPHORE(_hSemaphore,_initCount,_maxCount)\
_hSemaphore=CreateSemaphore(NULL,_initCount,_maxCount,NULL);
//3P原语操作
#defineP(_hSemaphore)WaitForSingleObject(_hSemaphore,INFINITE);
//4V原语操作
#defineV(_hSemaphore)ReleaseSemaphore(_hSemaphore,1,NULL);
//###########################################################################

//##########################################################################
typedefUINT(WINAPI*pThreadFunc)(LPVOIDlpParam);
pThreadFuncspThreadFuncArray[128]={NULL};
#defineDECLARE_THREAD_ARRAY(_hThreadArray)HANDLE_hThreadArray##[128]={NULL};
#defineINIT_THREAD_FUNC_ARRAY(_x,_hThreadArray)\
do{\
DWORDdwThreadId,dwThrdParam=1;\
_hThreadArray[_x]=CreateThread(NULL,0,ThreadFunc##_x,&dwThrdParam,0,&dwThreadId);\
}while(0);
//#############################################################################
DWORDWINAPIThreadFunc0(LPVOIDlpParam);
DWORDWINAPIThreadFunc1(LPVOIDlpParam);
DWORDWINAPIThreadFunc2(LPVOIDlpParam);
DWORDWINAPIThreadFunc3(LPVOIDlpParam);
DWORDWINAPIThreadFunc4(LPVOIDlpParam);
DWORDWINAPIThreadFunc5(LPVOIDlpParam);
DWORDWINAPIThreadFunc0(LPVOIDlpParam)
{
return0;
}
DWORDWINAPIThreadFunc1(LPVOIDlpParam)
{
return0;
}
DWORDWINAPIThreadFunc2(LPVOIDlpParam)
{
return0;
}
DWORDWINAPIThreadFunc3(LPVOIDlpParam)
{
return0;
}
DWORDWINAPIThreadFunc4(LPVOIDlpParam)
{
return0;
}
DWORDWINAPIThreadFunc5(LPVOIDlpParam)
{
return0;
}
//##########################################################################
intmain(intargc,char*argv[])
{
DECLARE_THREAD_ARRAY(hThreadArray1);
INIT_THREAD_FUNC_ARRAY(0,hThreadArray1);
INIT_THREAD_FUNC_ARRAY(1,hThreadArray1);
INIT_THREAD_FUNC_ARRAY(2,hThreadArray1);
INIT_THREAD_FUNC_ARRAY(3,hThreadArray1);
INIT_THREAD_FUNC_ARRAY(4,hThreadArray1);
INIT_THREAD_FUNC_ARRAY(5,hThreadArray1);
printf("HelloWorld!\n");
return0;
}

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
仅仅是提供原语封装,可供学习操作系统而对WINDOWSAPI不熟的人们使用
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
我觉得不怎样
回复

使用道具 举报

千问 | 2021-1-27 06:17:32 | 显示全部楼层
确实不怎么样...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行