最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

操作系统原理实验报告03

来源:动视网 责编:小OO 时间:2025-09-28 00:40:58
文档

操作系统原理实验报告03

《操作系统原理》实验报告实验序号:3实验项目名称:线程的同步学号姓名专业、班实验地点指导教师实验时间一、实验目的及要求1.进一步掌握Windows系统环境下线程的创建与撤销。2.熟悉Windows系统提供的线程同步API。3.使用Windows系统提供的线程同步API解决实际问题。二、实验设备(环境)及要求Windows操作系统与VisualC++开发环境三、实验内容与步骤完成主、子两个线程之间的同步,要求子线程先执行。在主线程中使用系统调用CreateThread()创建一个子线程。主线程创
推荐度:
导读《操作系统原理》实验报告实验序号:3实验项目名称:线程的同步学号姓名专业、班实验地点指导教师实验时间一、实验目的及要求1.进一步掌握Windows系统环境下线程的创建与撤销。2.熟悉Windows系统提供的线程同步API。3.使用Windows系统提供的线程同步API解决实际问题。二、实验设备(环境)及要求Windows操作系统与VisualC++开发环境三、实验内容与步骤完成主、子两个线程之间的同步,要求子线程先执行。在主线程中使用系统调用CreateThread()创建一个子线程。主线程创
《操作系统原理》实验报告

实验序号:3                   实验项目名称:线程的同步

学  号姓  名专业、班
实验地点指导教师实验时间
一、实验目的及要求

1. 进一步掌握Windows系统环境下线程的创建与撤销。

2.熟悉Windows系统提供的线程同步API。

3.使用Windows系统提供的线程同步API解决实际问题。

二、实验设备(环境)及要求

Windows操作系统与Visual C++开发环境

三、实验内容与步骤

完成主、子两个线程之间的同步,要求子线程先执行。在主线程中使用系统调用CreateThread()创建一个子线程。主线程创建子线程后进入阻塞状态,直到子线程运行完毕后唤醒主线程。

<参考程序 >

#include "stdafx.h"

#include

#include

static HANDLE h1;                                  //线程句柄

static HANDLE hHandle1=NULL;                     //信号量句柄

void func();

int main(int argc, char* argv[])

{

    int nRetCode = 0;

    DWORD    dwThreadID1;

    DWORD dRes,err;

    hHandle1 =代码1                                  //创建一个信号量

    if     (hHandle1==NULL) printf("Semaphore Create Fail!\\n");

    else printf("Semaphore Create Success!\\n");

    hHandle1 =代码2                                  //打开信号量

    if     (hHandle1==NULL) printf("Semaphore Open Fail!\\n");

    else printf("Semaphore Open Success!\\n");

    h1=CreateThread((LPSECURITY_ATTRIBUTES)NULL,0,

                    (LPTHREAD_START_ROUTINE)func,

                    (LPVOID)NULL,

                    0,&dwThreadID1);                     //创建子线程

    if (h1==NULL) printf("Thread1 create Fail!\\n");

    else printf("Thread1 create Success!\\n");

    dRes=代码3                          //主线程等待子线程结束

    err=GetLastError();

    printf("WaitForSingleObject err=%d\\n",err);

    if (dRes == WAIT_TIMEOUT)    printf("TIMEOUT!dRes=%d\\n",dRes);

    else if    (dRes==WAIT_OBJECT_0) printf("WAIT_OBJECT!dRes=%d\\n",dRes);

    else if    (dRes==WAIT_ABANDONED) printf("WAIT_ABANDONED!dRes=%d\\n",dRes);

    else    printf("dRes=%d\\n",dRes);

    CloseHandle(h1);

    CloseHandle(hHandle1);

    ExitThread(0);

    return nRetCode;

}

void func()

{

    BOOL rc;

    DWORD err;  

    printf(" Now In Thread !\\n");

    rc=代码4                              //子线程唤醒主线程

    err=GetLastError();

    printf("ReleaseSemaphore err=%d\\n",err);

    if (rc==0) printf("Semaphore Release Fail!\\n");

    else printf("Semaphore Release Success!rc=%d\\n",rc);

}

以上程序完成了主、子两个线程执行先后顺序的同步关系,填充代码并思考以下问题:

(1)如何实现多个线程的同步?

(2)若允许子线程执行多次后主线程再执行,又如何设置信号量的初值。 

四、实验结果与数据处理

五、分析与讨论

对上机实践结果进行分析,上机的心得体会。

六、教师评语

签名:

日期:

成绩

文档

操作系统原理实验报告03

《操作系统原理》实验报告实验序号:3实验项目名称:线程的同步学号姓名专业、班实验地点指导教师实验时间一、实验目的及要求1.进一步掌握Windows系统环境下线程的创建与撤销。2.熟悉Windows系统提供的线程同步API。3.使用Windows系统提供的线程同步API解决实际问题。二、实验设备(环境)及要求Windows操作系统与VisualC++开发环境三、实验内容与步骤完成主、子两个线程之间的同步,要求子线程先执行。在主线程中使用系统调用CreateThread()创建一个子线程。主线程创
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top