文章目录
- 线程同步和调度
- 一、实验目的
- 二、实验要求与内容、过程与结果
- 系列文章
线程同步和调度
一、实验目的
通过创建线程、分配线程优先级和终止线程的程序设计和调试操作,进一步熟悉操作系统的线程概念,理解Windows 2000线程的生命周期。
通过对事件、互斥体对象和信号量的了解,加深对Windows 2000线程同步的理解。
二、实验要求与内容、过程与结果
1、运行例程3-1,注意观察运行结果。请回答线程的实际工作在哪个方法中来实现的,并描述程序的功能。
程序功能:在DoStuff中实现将线程A与B的ID各输出5次。
2、修改例程3-1,创建两个线程MyThred1和MyThred2:线程MyThred1输出10次“A。。。” ,线程MyThred2输出10次“B^^^”。多次运行该程序,并注意观察输出结果是否一样?并回答在程序运行过程中,任务管理器中能看见这2个线程吗?(为了便于任务管理器观察线程的执行,可将循环次数设置大些。)
(1)多次运行该程序,观察到输出结果不一样。
(2)在程序运行过程中,任务管理器中能看见这2个线程。
3、运行例程3-2,线程A和线程B哪个先运行结束?为什么?将程序中语句:wtA.SetPriority(THREAD_PRI0RITY_L0WEST)
中的参数THREAD_PRI0RITY_L0WEST修改为THREAD_PRIORITY_HIGHEST后,再运行程序,输出结果有何不同?
修改前B先完成,因为A的优先级最低;修改后A先完成,因为A的优先级最高。
4、运行例程3-3,线程A和线程B哪个先运行结束?为什么?
线程A先结束,因为线程B挂起,只有在A执行完毕之后才继续执行。
5、运行例程3-4,写出屏幕中的输出信息,并请描述该程序的功能。
功能:创建和打开进程间的要发送信号的事件对象。
6、运行例程3-5,请描述该程序的功能。
功能:使用互斥体来保护共享资源。
7、运行例程3-6,请描述该程序的功能。
功能:使用信号量来限制活动线程数。
8、编写一个程序,利用信号量来实现多个生产者-消费者问题。
总结:
线程同步和调度是操作系统中非常重要的概念和技术,它们在多线程编程中扮演着重要的角色。在本文中,我们将简单介绍线程同步和调度的概念和实现方法。
一、线程同步
线程同步是指多个线程之间协调执行的过程,控制各个线程执行的顺序,保证它们的执行结果是正确的。线程同步可以防止多个线程同时访问或修改共享变量,从而避免由此产生的不一致性或错误。
常用的线程同步方法有互斥锁、信号量和条件变量。互斥锁是一种独占锁,它保证只有一个线程可以访问共享资源,其他线程则必须等待。信号量是一种计数锁,它维护了一个资源的计数器,线程可以获得或释放这些资源。条件变量则是用于线程的等待和通知机制,它可以让线程在某个条件成立时等待或唤醒。
二、线程调度
线程调度是指操作系统决定哪个线程可以运行的过程。操作系统的调度算法决定了每个线程被分配的处理时间和顺序。调度算法根据一些因素,如线程的优先级、I/O等待和执行时间等来决定每个线程的运行顺序。
常用的调度算法有先来先服务、短作业优先、轮转和多级反馈等。在先来先服务算法中,CPU将分配给最早发出请求的线程。在短作业优先算法中,长时间等待的任务将被延迟,因为较短的任务更容易完成。轮转算法将CPU时间分配给每个线程一定的时间片,每个线程轮流运行,以使所有线程都有机会获得相等的CPU时间。多级反馈算法则为每个线程分配不同的优先级,并将它们放入不同的队列中,以便更好地管理线程的执行。
总之,线程同步和调度是多线程编程的核心概念和技术。了解这些概念和方法,可以帮助程序员更好地编写多线程应用程序,提高程序的并发性和性能。
系列文章
实验 | 目录 | 直达链接 |
---|---|---|
实验一 | Linux初步 | https://want595.blog.csdn.net/article/details/133145097 |
实验二 | 进程的控制和通信(Windows2000) | https://want595.blog.csdn.net/article/details/133903234 |
实验三 | 线程同步和调度 | https://want595.blog.csdn.net/article/details/133903419 |
实验四 | 单处理机调度 | https://want595.blog.csdn.net/article/details/133903537 |
实验五 | 银行家算法 | https://want595.blog.csdn.net/article/details/133903623 |
实验六 | 虚拟存储管理技术 | https://want595.blog.csdn.net/article/details/133903701 |