第一范文网 - 专业文章范例文档资料分享平台

操作系统原理实验报告

来源:用户分享 时间:2025/7/24 5:03:11 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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); //退出临界区 }

搜索更多关于: 操作系统原理实验报告 的文档
操作系统原理实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8vvt84ps8m6d7jn4l8uv58u602x74s012j3_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top