云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 操作系统原理实验报告

操作系统原理实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/5/6 9:27:47

LONG InterlockedExchangeAdd ( PLONG Addend, // pointer to the addend LONG Increment // increment value );

4、 主要数据结构

void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); void EnterCriticalSection( LPCRITICAL_SECTION lpCriticalSection); void LeaveCriticalSection( LPCRITICAL_SECTION lpCriticalSection); void DeleteCriticalSection( LPCRITICAL_SECTION lpCriticalSection); LONG InterlockedIncrement( LPLONG lpAddend ) ; // 增一操作 LONG InterlockedDecrement( LPLONG lpAddend); // 减一操作 LONG InterlockedExchangeAdd ( PLONG Addend, // pointer to the addend LONG Increment // increment value

三、实验结果 1、基本数据 源程序代码行数 68

2.测试结果分析

完成该实验投入的时间(小时数) 与其他同学讨论次数 2 0

//增减任意值

四、实验体会 1、实验体会和收获

熟练了Windows系统环境下线程的创建与撤销,熟悉了Windows系统提供的线程互斥API,使用Windows系统提供的线程互斥API解决实际问题。

五、源代码

#include #include #include

static int count=5; //共享变量

static HANDLE h1,h2; //两个子进程的句柄变量

LPCRITICAL_SECTION hCriticalSection; //定义指向临界区对象的地址指针 CRITICAL_SECTION Critical; //定义临界区

void func1( ); //线程函数的定义不符合WIN32格式,后面CreateThread函数中

void func2( ); //要附加强制类型转换

//主线程的实现

int main(int argc, TCHAR* argv[],TCHAR* envp[]) {

int nRetCode=0;

DWORD dwThreadID1, dwThreadID2;

hCriticalSection=&Critical; //将指向临界区的对象的指针指向临界区 InitializeCriticalSection(hCriticalSection); //初始化临界区 //创建子线程func1

h1=CreateThread((LPSECURITY_ATTRIBUTES)NULL, 0,

(LPTHREAD_START_ROUTINE)func1, (LPVOID)NULL, 0,&dwThreadID1);

if(h1==NULL)printf(\else printf(\

//创建子线程func2

h2=CreateThread((LPSECURITY_ATTRIBUTES)NULL, 0,

(LPTHREAD_START_ROUTINE)func2, (LPVOID)NULL, 0,&dwThreadID2);

if(h2==NULL) printf(\else printf(\

Sleep(1000); CloseHandle(h1); CloseHandle(h2);

DeleteCriticalSection(hCriticalSection); //删除临界区 ExitThread(0); return nRetCode; }//主线程结束

//子线程fun c2的实现 void func2()

{ int r2;

EnterCriticalSection(hCriticalSection); //进入临界区 r2=count; Sleep(100); r2=r2+1; count=r2;

printf(\

LeaveCriticalSection(hCriticalSection); //退出临界区 }

//子线程func1的实现 void func1() { int r1;

EnterCriticalSection(hCriticalSection); //进入临界区 r1=count; Sleep(500); r1=r1+1; count=r1;

printf(\

LeaveCriticalSection(hCriticalSection); //退出临界区 }

搜索更多关于: 操作系统原理实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

LONG InterlockedExchangeAdd ( PLONG Addend, // pointer to the addend LONG Increment // increment value ); 4、 主要数据结构 void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); void EnterCriticalSection( LPCRITICAL_SECTION lpCriticalSection); void LeaveCriticalSection( LPCRITICAL_SECTION lpCriticalSection); void DeleteCriticalSection( LPCRITICAL_SECTION lpCrit

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com