生产者与消费者实验报告

生产者与消费者实验报告
生产者与消费者实验报告

一、实验目的

利用Windows提供的API函数,编写程序,解决生产者与消费者问题,实现进程的互斥与同步。

二、实验内容

本实验要求设计在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。

生产者线程生产物品时,若无空缓冲区可用,生产者线程必须等待消费者线程释放出一个空缓冲区;消费者线程消费物品时,若缓冲区为空,消费者线程将被阻塞,直到新的物品被生产出来。生产者和消费者使用N个不同的缓冲区(N 为一个确定的数值,例如N=32)。需要使用如下信号量:

一个互斥信号量,用以阻止生产者线程和消费者线程同时操作缓冲区列表;

一个信号量,当生产者线程生产出一个物品时可以用它向消费者线程发出信号;

一个信号量,消费者线程释放出一个空缓冲区时可以用它向生产者线程发出信号;

三、实验步骤

1.创建信号量

根据题目的要求,首先创建信号量。本次实验共需使用三个信号量:一个用以阻止生产者线程和消费者线程同时操作缓冲区列表的互斥信号量,一个当生产者线程生产出一个物品时可以用它向消费者线程发出信号的信号量以及一个消费者线程释放出一个空缓冲区时可以用它向生产者线程发出信号的信号量。

使用Windows提供的CreateSemaphore函数和CreateMutex创建一个新的信号量。

CreateSemaphore函数原型:

HANDLE CreateSemaphore{

LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,

LONG lInitialCount,

LONG lMaximumCount,

LPCTSTR lpName

};

如执行成功,返回信号量对象的句柄;零表示出错。

本程序所使用的该函数中各参数的解释:

1.lpSemaphoreAttributes

SECURITY_ATTRIBUTES,指定一个SECURITY_ATTRIBUTES结构,或传递零值,表示采用不允许继承的默认描述符。该参数定义了信号量的安全特性。

2.lInitialCount

设置信号量的初始计数。可设置零到lMaximumCount之间的一个值。

3.lMaximumCount

设置信号量的最大计数。

4.lpName

指定信号量对象的名称。可赋值为NULL。

CreateMutex函数原型:

HANDLE CreateMutex{

LPSECURITY_ATTRIBUTES lpMutexAttributes,

BOOL bInitialOwner,

LPCTSTR lpName

};

找出当前系统是否已经存在指定进程的实例。如果没有则创建一个互斥体。CreateMutex函数可用来创建一个有名或无名的互斥量对象。

本程序所使用的该函数中各参数的解释:

1.lpMutexAttributes

指定一个SECURITY_ATTRIBUTES结构,或传递零值表示使用不允许继承的默认描述符。

2.bInitialOwner

如创建进程希望立即拥有互斥体,则设为TRUE。一个互斥体同时只能由一个线程拥有。

3.lpName String

指定互斥体对象的名字。

2.创建线程

使用了Windows提供的CreateThread函数来创建一个在调用进程的地址空间中执行的线程。

函数原型

HANDL CreateThread{

LPSECURITY_ATTRIBUTES lpThreadAttributes,

DWORD dwStackSize,

LPTHREAD_START_ROUTINE lpStartAddress,

LPVOID lpParameter,

DWORD dwCreationFlags,

LPDWORD lpThreadld

};

CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤:

1.在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回;

2.把线程退出码置为STILL_ACTIVE,把线程挂起计数置1;

3.分配context结构,分配两页的物理存储以准备栈,保护页设置为PAGE_READWRITE,第2页设为PAGE_GUARD;

4.lpStartAddr和lpvThread值被放在栈顶,使它们成为传送给StartOfThread的参数;

5.把context结构的栈指针指向栈顶(第5步)指令指针指向startOfThread 函数。

本程序所使用的函数中各参数的解释:

1.pThreadAttributes

指向SECURITY_ATTRIBUTES型态的结构的指针。初始化为NULL使用默认安全性,不可以被子线程继承,否则需要定义一个结构体将它的bInheritHandle 成员初始化为TRUE。

2.dwStackSize

设置初始栈的大小,以字节为单位,如果初始值设为为0,那么默认将使用与调用该函数的线程相同的栈空间大小。任何情况下,Windows根据需要动态延长堆栈的大小。

3.lpStartAddress

指向线程函数的指针,形式:@函数名,函数名称没有限制,但是必须以下列形式声明:DWORD WINAPI 函数名 (LPVOID lpParam),格式不正确将无法调用

成功。

4.lpParameter

向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。

5.dwCreationFlags

线程标志,可取值如下:

(1)CREATE_SUSPENDED(0x00000004):创建一个挂起的线程,

(2)0:表示创建后立即激活。

(3)STACK_SIZE_PARAM_IS_A_RESERVATION(0x00010000):dwStackSize参数指定初始的保留堆栈的大小,否则,dwStackSize指定提交的大小。

6.lpThreadId

保存新线程的id。当函数成功,返回线程句柄;函数失败返回false;若不想返回线程ID,设置值为NULL。

3.信号量的变化

在程序的运行过程中必须动态改变第一步中设置的三个信号量的参数值。使用的是Windows提供的WaitForSingleObject函数、ReleaseMutex函数和ReleaseSemaphore函数

WaitForSingleObject函数原型

DWORD WaitForSingleObject{

HANDLE hHandle,

DWORD dwMilliseconds

};

本程序所使用的函数中各参数的解释:

1.hHandle

对象句柄,可以指定一系列的对象,如Event、Job、Memory resource notification、Mutex、Process、Semaphore、Thread、Waitable timer等。

2.dwMilliseconds

定时时间间隔,单位为milliseconds(毫秒).如果指定一个非零值,函数处于等待状态直到hHandle标记的对象被触发,或者时间到了。如果dwMilliseconds为0,对象没有被触发信号,函数不会进入一个等待状态,它总是立即返回。如果dwMilliseconds为INFINITE,对象被触发信号后,函数才会返回。

ReleaseMutex函数原型

BOOL WIANPI ReleaseMutex{

HANDLE hMutex

};

ReleaseMutex函数的功能是释放互斥对象的控制权。返回TRUE表示成功,FALSE表示失败。

本程序所使用的函数中参数的解释:

HANDLE hMutex

HANDLE,制定一个互斥体的句柄。

ReleaseSemaphore函数原型

BOOL ReleaseSemaphore{

HANDLE hSemaphore,

LONG lReleaseCount,

LPLONG lpPreviousCount

};

ReleaseSemaphore函数用于对指定的信号量增加指定的值。

本程序所使用的函数中参数的解释:

1.hSemaphore

所要操作的信号量对象的句柄,这个句柄是CreateSemaphore或者OpenSemaphore函数的返回值且必须有SEMAPHORE_MODIFY_STATE的权限。

2.lReleaseCount

信号量对象在当前基础上所要增加的值(必须大于0)。如果信号量加上这个值会导致信号量的当前值大于信号量创建时指定的最大值,则信号量的当前值不变,同时这个函数返回FALSE。

3.lpPreviousCount

指向返回信号量上次值的变量的指针,如果不需要信号量上次的值,那么这个参数可以设置为NULL。

四、系统截图

图1 初始界面

图2 生产者生产物品并显示缓冲区状态

图3 消费者消耗物品并显示缓冲区状态

五、遇到的问题及思考

1、因为本程序允许有多个生产者和消费者存在,这就导致了一开始的结果中分不清到底是哪个生产者或消费者在工作,因此决定加上编号,但由于当时对CreateThread函数还不是很了解所以不知道如何传递参数,最后通过参考网上资料后得知CreateThread中的第四个参数lpParameter向线程函数传递的数值,在这里编号即可。

2、一开始无论如何修改程序(即使设置较长的时间断点),程序总会以“一个生产者一个消费者”这样的顺序运行。这一点让我十分的疑惑,因为当我去掉消费者线程时,程序居然完成一个生产者的过程后停止。经过思考后我发现问题出现在语句WaitForSingleObject(m_S_Empty, WaitTime) == WAIT_OBJECT_0,网上查阅资料后得知执行该语句则只有第一个线程被通知,因此事实上也只有完成了第一个生产者线程。最后将该条语句换为WaitForSingleObject(m_S_Empty, WaitTime),这样所有的线程均被通知。

3、在程序运行时发现几个生产者线程提示信息缠在一起,经考虑后认定问题出在WaitTime的赋值上,需要较大的数值才能保证两个程序分开。

生产者与消费者问题(Java)

package Table; public class Message { public static int id; public String content; public String getContent() { return content; } public void setContent(String content) { this.content = content; } public int getId() { return id; } public void setId(int id) { Message.id = id; } } package Table; import java.util.ArrayList; import java.util.List; public class Queue { List queue = new ArrayList(); /** 队列中message对象的最大值,默认为10 */ int maxMessageNum = 10; public synchronized void produce(Message message) { /**synchronized为关键字,表示在任何一个线程要访问缓冲区时都会 检查有无其他线程访问此段内容,有的话则等待,无的话则直接访问**/ this.notifyAll(); while (queue.size() == maxMessageNum) { System.out.println(Thread.currentThread().getName() + "the desk is full, and the chef want to relax"); try { this.wait(); } catch (InterruptedException e) { e.printStackTrace();

实验1:生产者消费者问题

福建农林大学金山学院实验报告 系(教研室):专业:计算机科学与技术年级: 实验课程:生产者与消费者实验姓名:学号: 实验室号:1#608 计算机号:实验时间:指导教师签字:成绩: 实验1:生产者消费者问题 一、实验目的 生产者消费者问题是操作系统中经典的同步和互斥问题。通过实验,要求学生掌握两者之间的同步信号量和互斥信号量的使用,更深刻了解临界资源、同步和互斥的概念。 二、实验要求 1.一组生产者通过一个具有N个缓冲区的缓冲池循环不断地向一组消费者提供产 品。 2.建一个队列, 队列的长度由n记录, 定义两个指针, 分别指向队列的头和尾消 费者从头指针读取数据,每读取一个数据把n--,生产者把数据写入尾指针, 每写入一个数据就n++,当n=N的时候生产者暂停写入数据。 3.注意:缓冲池队列,用互斥锁保护。 三、实验内容和原理 1.分别画出生产者和消费者的流程图

2.针对生产者和消费者问题,可以分为哪几种情况,使用了哪些原语?分别代表 什么意思?过程如何?阐述哪些进程之间存在同步,哪些进程之间存在互斥。 3.缓冲区是否为临界资源?是否可以循环使用?通过什么来实现?举例说明(可 画图) 四、实验环境 1. 硬件:PC机; 2. 软件:Windows操作系统、。 五、算法描述及实验步骤 #include <> #include const unsigned short SIZE_OF_BUFFER = 10; unsigned short ProductID = 0; unsigned short ConsumeID = 0;

unsigned short in = 0; unsigned short out = 0; int g_buffer[SIZE_OF_BUFFER]; bool g_continue = true; HANDLE g_hMutex; HANDLE g_hFullSemaphore; HANDLE g_hEmptySemaphore; DWORD WINAPI Producer(LPVOID); DWORD WINAPI Consumer(LPVOID); int main() { g_hMutex = CreateMutex(NULL,FALSE,NULL); g_hFullSemaphore = CreateSemaphore(NULL,SIZE_OF_BUFFER-1,SIZE_OF_BUFFER-1,NULL); g_hEmptySemaphore = CreateSemaphore(NULL,0,SIZE_OF_BUFFER-1,NULL); const unsigned short PRODUCERS_COUNT = 3; const unsigned short CONSUMERS_COUNT = 1; const unsigned short THREADS_COUNT = PRODUCERS_COUNT+CONSUMERS_COUNT; HANDLE hThreads[PRODUCERS_COUNT]; DWORD producerID[CONSUMERS_COUNT]; DWORD consumerID[THREADS_COUNT]; for (int i=0;i

行为金融学实验报告记录(A股H股溢价分析心理账户过度自信)

行为金融学实验报告记录(A股H 股溢价分析心理账户过度自信)

————————————————————————————————作者:————————————————————————————————日期:

摘要 行为金融学就是将心理学尤其是行为科学的理论融入到金融学之中,是一门新兴边缘学科,它和演化证券学(Evolutionary Analysis Theory of Security,简称EAS)一道,是当前金融投资理论最引人注目的两大重点研究领域。 行为金融学从微观个体行为以及产生这种行为的心理等动因来解释、研究和预测金融市场的发展。这一研究视角通过分析金融市场主体在市场行为中的偏差和反常,来寻求不同市场主体在不同环境下的经营理念及决策行为特征,力求建立一种能正确反映市场主体实际决策行为和市场运行状况的描述性模型。 本文通过三个板块来说明行为金融学:心理账户、过度自信、A股H股溢价分析(行为金融学角度)让我们能够直观的了解行为金融学的基本状况,通过对理论与实践的结合,有利于我们更好的理解行为金融学的知识。总之,通过实习,我们对行为金融学有了更深层次地理解。本次实习报告从实习目的和意义、工作方法、取得的成果及经验、收获及体会来具体说明下实习的过程。 关键词:行为金融学心理账户过度自信 A股H股溢价分析

目录 论文总页数:14页 1实习的目的 (3) 2实习的时间 (3) 3实习的地点 (3) 4实习内容 (3) 4.1 A、H股溢价问题 (3) 4.1.1 A股与H股的价差能说明内地和中国香港地区市场中有一个市场不是有效 的吗?为什么? (3) 4.1.2 你认为导致A 、H股价差的原因有哪些? (4) 4.2 心理账户 (5) 4.2.1 概况 (5) 4.2.2 实验 (5) 实验一——成本与损失的不等价实验 (5) 实验二——赌场资金效应实验 (6) 实验三——沉没成本效应实验 (8) 4.3 过度自信 (9) 4.3.1 概况 (9) 4.3.2 实验 (9) 实验一——打折和邮购返券 (9) 实验二——创业 (10) 5实习心得体会 (12) 6教师评语 (13)

操作系统课程设计用多进程同步方法解决生产者消费者问题

操作系统课程设计 用多进程同步方法解决生产者-消费者问题 系别:计科系 专业: 计算机科学与技术 班级:04 级 4 班 学号:0410******* 姓名:苏德洪 时间:2006-7-7—2006-7-14

目录 一、题目: (3) 二、设计目的: (3) 三、总体设计思想概述: (3) 四、说明: (3) 五、设计要求: (3) 六、设计方案: (3) 七、流程图: (5) 八、运行结果 (7) 九、源程序 (11) 十、总结 (18) 十一、参考文献 (20)

一、题目: 用多进程同步方法解决生产者-消费者问题。 二、设计目的: 通过研究Linux 的进程机制和信号量实现生产者消费者问题的并发控制。 三、总体设计思想概述: 1、生产者—消费者问题是一种同步问题的抽象描述。 2、计算机系统中的每个进程都可以消费或生产某类资源。当系统中某一进程使用某一 资源时,可以看作是消耗,且该进程称为消费者。 3、而当某个进程释放资源时,则它就相当一个生产者。 四、说明: 有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1-20这20个整型数。 五、设计要求: 1、每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前 指针位置和生产者/消费者线程的标识符。 2、生产者和消费者各有两个以上。 3、多个生产者或多个消费者之间须有共享对缓冲区进行操作的函数代码。 六、设计方案: 通过一个有界缓冲区(用数组来实现,类似循环队列)把生产者和消费者联系起来。假定生产者和消费者的优先级是相同的,只要缓冲区未满,生产者就可以生产产品并将产品送入缓冲区。类似地,只要缓冲区未空,消费者就可以从缓冲区中去走产品并消费它。 应该禁止生产者向满的缓冲区送入产品,同时也应该禁止消费者从空的缓冲区中取出产品,这一机制有生产者线程和消费者线程之间的互斥关系来实现。 为解决生产者/消费者问题,应该设置两个资源信号量,其中一个表示空缓冲区的数目,用g_hFullSemaphore表示,其初始值为有界缓冲区的大小SIZE_OF_BUFFER;另一个表示缓冲区中产品的数目,用g_hEmptySemaphore表示,其初始值为0。另外,由于有界缓冲区是一个临界资源,必须互斥使用,所以还需要再设置一个互斥信号量g_hMutex,起初值为1。

生产者与消费者

重庆交通大学 《计算机操作系统》课程设计报告 班级:计软专业 2013 级 2 班 姓名: 学号: 课程设计题目:生产者/消费者与FCFS 所属课程:计算机操作系统 实验室(中心):语音大楼801 指导教师:刘洋 完成时间: 2015 年 12 月 5 日 信息科学与工程学院课程设计成绩单

课程名称:计算机操作系统指导教师:刘洋

重庆交通学院信息科学与工程学院课程设计任务书

生产者/消费者与FCFS 一、内容提要 操作系统是计算机的核心软件,是计算机专业学生的专业必修课。进程同步问题是计算机操作系统中的重点内容,而生产者-消费者问题是进程同步问题中的经典,它是计算机中相互合作进程关系的一种抽象,该问题具有很大的代表性和使用价值。 在计算机系统中,很多问题都可以归结为生产者与消费者问题,提别是在通讯和控制系统中。因此,对该类问题的研究是非常必要的。一般而言,我们把提供给某种资源的进程(线程)称之为生产者,二吧消耗资源的进程(线程)称之为消费者。在大多数情况下,生产者和消费者的数目都是多于一个的。下面以多个进程(线程)共享一有界缓冲池为例来说明。 如图,左端箭头表示生产者,右端箭头表示消费者,设P 1、P 2 、…、P K 是k 个想缓冲池装入数据的进程(线程)(生产者)C 1、C 2 、…、C m 是m个冲缓冲池 中取出数据进行处理的进程(线程)(消费者),假设对任何P i 每次向缓冲区 中申请一空白缓冲区,并把数据装入其中;而对于常见的情况是任何C i 每次都从缓冲池中取出一满缓冲区的内容,并进行相应的处理,并把缓冲区清空。而每次生产者装入数据和消费者取出数据都是相同的(这是最常见的情况)。针对以上进程(线程)通信,如不对生产者进程(线程)和消费者(线程)的操作进行限制,则可能破坏数据的完整性。一种情况是一个生产者进程(线程)正在装入数据到缓冲区时,另外的生产者进程(线程)可能同时把数据写入相同区域,造成数据破坏,另一种情况是一个生产者进程(线程)正在装入数据到缓冲区时,另外的消费者进程(线程)可能读入该区域数据,由于数据未写完,从而造成消

操作系统生产者与消费者问题实验报告

《操作系统》实验报告 生产者和消费者的问题 一、实验目的 1.掌握基本的同步与互斥的算法,理解基本的生产者与消费者的模型。 2.学习使用Windows 2000/XP中基本的同步对象,掌握相关的API的使用方法。 3.了解Windows 2000/XP中多线程的并发执行机制,线程间的同步和互斥。 二、实验的内容及其要求 1.实验内容 以生产者/消费者模型为根据,在Windows 2000环境下创建一个控制台进程,在改进程中创建n个线程模拟生产者和消费者,实现进程(线程)的同步与互斥。 2.实验要求 ①学习并理解生产者/消费者模型及其同步/互斥规则 ②学习了解Windows同步对象及其特性 ③熟悉实验环境,掌握相关API的使用方法 ④设计程序,实现生产者/消费者进程(线程)的同步与互斥 ⑤提交实验报告 三、实验的时间安排 1.实验前,先到图书馆或上网百度了解有关生产者/消费者模型的相关知识,建立生产者/消费者模型的基本概念。 2.利用13周、15周、17周的上机时间编写和调试程序代码。 3.利用其他课余时间来分析实验的最终结果并完成相关的实验报告。 四、实验的环境 1.硬件条件:普通计算机一台 2.软件条件:①操作系统:Windows 2000/XP ②开发语言:VC++ 本实验是在Windows 2000+VC6.0环境下实现的,利用Windows SDK提供的系统接口(API)完成程序的功能。实验在Windows下安装VC后进行,因为VC是一个集成开发环境,其中包含了Windows SDK所有工具和定义,所以安装了VC后就不用特意安装SDK了。实验中所用的API(应用程序接口),是操作系统提供的用来进行应用程序设计的系统功能接口。要使用这些API,需要包含对这些函数进行说明的SDK 头文件,最常见的就是windows.h。一些特殊的API调用还需要包含其他的头文件。 五、正文 1.程序结构图:

(完整版)消费者行为学心得体会

本学期在王老师的教导下我们深入学习了《消费者行为学》这门课程。消费者行为学是一门年轻的学科,又是一门领域跨度大的学科,涉及心理学、社会学、社会心理学、人类文化学、经济学、市场营销学、管理学以及统计学等诸多学科。近年来,消费者行为学不仅成为我国大学市场营销专业学生的必修课,而且受到管理、传播、广告等相关专业学生的重视和欢迎。 对于这门课的很多内容与我们的生活是息息相关的,例如说企业营销活动的目的就是刺激消费者,引起消费者的反应;联结企业营销刺激与消费者反应的就是消费者心理活动过程和购买决策过程,而心理活动过程和购买决策过程又受消费者所处的环境。根据这些框架所展开的内容包括三个方面,即消费者心理活动过程、消费者购买决策过程和消费者环境。消费者心理活动过程包括动机过程、信息处理过程、记忆与知识、学习过程、情感过程、态度过程和消费者个人心理因素及其相关的价值和生活方式;消费者购买决策过程包括认识问题、搜寻问题、方案评价、购买行为和购买后行为;消费者环境包括

文化、社会阶层、参照群体、家庭和信息流。这些都是实实在在的发生在我们的生活中的。 通过对这门课的学习,王老师带领我们研究了消费者个人或群体选择、购买、使用产品或服务、以及购买行为与购买后行为等等;讨论了影响消费者决策过程的效用性需要和快乐性需要;分析了消费者的购买动机、消费者 选择判断的过程、消费者态度的改变、忠诚度和满意度等等,全面了解到消费者行为学的相关原理。更加系统的理解那些影响消费者行为的因素,并把这些知识运用到今后工作,乃至企业的决策过程中,帮助我们建立为消费者服务的市场营销新理念,提高营销活动的科学性、预见性。 学完这门课后,我们总是有意无意的想要将学过的消费者行为学知识运用到生活中去,将所学到的知识与实际生活联系在一起。当我们走在大街上,又或者走进一家餐厅吃饭,我们总是习惯性地打量着那些店面的选址、装修、格局、客流量、以及消费者进去消费时的感受等等。我们在作为消费者的同时,以专业的角度去研究消费者需要些什么,对于哪些产品和服务比较喜欢或者排斥,加深我们对于消费者行为学的认识,对于我们以后踏入社会有很大的帮助。只有我们自己了解消费者的真正需求点是什么,才能进行有效的销售,也才有可能取得成功。每个人的想法和个性都不尽相同,因此产生的消费者行为也是千变万化。而我们要想完全去解读消费者的行为是很困难的,

生产者消费者问题设计与实现

操作系统课程设计任务书

目录

1.选题背景 生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它描述是有一块缓冲区作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。解决生产者/消费者问题的方法可分为两类:(1)采用某种机制保护生产者和消费者之间的同步;(2)在生产者和消费者之间建立一个管道。第一种方式有较高的效率,并且易于实现,代码的可控制性较好,属于常用的模式。第二种管道缓冲区不易控制,被传输数据对象不易于封装等,实用性不强。因此本文只介绍同步机制实现的生产者/消费者问题。 同步问题核心在于:如何保证同一资源被多个线程并发访问时的完整性。常用的同步方法是采用信号或加锁机制,保证资源在任意时刻至多被一个线程访问。Java语言在多线程编程上实现了完全对象化,提供了对同步机制的良好支持。在Java中一共有四种方法支持同步,其中前三个是同步方法,一个是管道方法。 2.设计思路 .生产者—消费者问题是一种同步问题的抽象描述。 计算机系统中的每个进程都可以消费或生产某类资源。当系统中某一进程使用某一资源时,可以看作是消耗,且该进程称为消费者。 而当某个进程释放资源时,则它就相当一个生产者 3.过程论述 首先,生产者和消费者可能同时进入缓冲区,甚至可能同时读/写一个存储单元,将导致执行结果不确定。这显然是不允许的。所以,必须使生产者和消费者互斥进入缓冲区。即某时刻只允许一个实体(生产者或消费者)访问缓冲区,生产者互斥消费者和其他任何生产者。 其次,生产者不能向满的缓冲区写数据,消费者也不能在空缓冲区中取数据,即生产者与消费者必须同步。当生产者产生出数据,需要将其存入缓冲区之前,首先检查缓冲区中是否有“空”存储单元,若缓冲区存储单元全部用完,则生产者必须阻塞等待,直到消费者取走一个存储单元的数据,唤醒它。若缓冲区内有“空”存储单元,生产者需要判断此时是否有别的生产者或消费者正在使用缓冲区,若是有,则阻塞等待,否则,获得缓冲区的使用权,将数据存入缓冲区,释放缓冲区的使用权。消费者取数据之前,首先检查缓冲区中是否存在装有数据的存储单元,若缓冲区为“空”,则阻塞等待,否则,判断缓冲区是否正在被使用,

操作系统实验报告生产者消费者问题

操作系统课程设计 一.实验目标 完成N个生产者和M个消费者线程之间的并发控制,N、M不低于30,数据发送和接收缓冲区尺寸不小于20个(每个产品占据一个)。 其中生产者线程1、3、5、7、9生产的产品供所有奇数编号的消费者线程消费,只有所有奇数编号的消费者线程都消费后,该产品才能从缓冲区中撤销。 其中生产者线程2、4、6、8、10生产的产品所有偶数编号的消费者线程都可消费,任一偶数编号消费者线程消费该消息后,该产品都可从缓冲区中撤销。 其中11-20号生产者线程生产的产品仅供对应编号的消费者线程消费。 其他编号生产者线程生产的产品可由任意的消费者线程消费。 每个生产线程生产30个消息后结束运行。如果一个消费者线程没有对应的生产者线程在运行后,也结束运行。所有生产者都停止生产后,如果消费者线程已经

没有可供消费的产品,则也退出运行。 二.实验原理 2.1原理 生产者与消费者线程采用posix互斥锁机制进行互斥进入各自的代码段,只有采用互斥锁临界区代码段才可以不被打扰的执行;同步机制采用的是posix条件变量pthread_cond_wait和pthraed_cond_signal进行同步的。 线程间的通信采用的是共享内存机制。(注:所有的共享内存块是在进程里建立的,线程只需链接上各自的共享内存块即可,每一块共享内存的大小是100). 在这里共享内存设置成一个100的数组。 具体实施:(1)为1.3.5.7.9建立一个共享内存1号,1.3.5.7.9生产者线程生产的产品都放入这块共享内存缓冲区,所有奇数的消费者线程要消费的话,只需在消费者线程中链接上这块共享内存,就可以直接消费1.3.5.7.9生产者线程生产的产品。 (2)为2.4.6.8.10建立一块共享内存2号。2.4.6.8.10生产的产品都放入2号共享内存缓冲区,所有的偶数的消费者线程只要链接上2号缓冲区,就可以消费2.4.6.8.10生产的产品。当偶数消费者线程消费产品后,产品即可从缓冲区撤销,方法是在消费线程里将消费的产品在共享内存数组里置0。 (3)为11--20的每一对生产者消费者线程建立一块共享内存,编号11--20. 11--20号的消费者线程能链接各自的共享内存缓冲区或奇数或偶数共享内存缓冲区,即11--20号的生产者生产的产品只能被对应的消费者消费而11-20的奇数消费者可以消费缓冲区1的产品,偶数消费者可消费缓冲区2的产品。 (4)为21--30号的生产者消费者线程只建立一块共享内存21号,21--30号生产者生产的产品都放入21号缓冲区,所有的消费者线程只要链接上21号共享内存,就可以消费21--30号生产者生产的产品。 用于控制线程是否结束的方法是:设置一个全局变量t,在生产者线程里进行t++,在生产者线程里当t达到10时(注:为了很好的测试程序,本应该在生产者生产30个产品时菜结束线程,这里设置成了10),就break跳出while()循环,这样线程自然就终止。同样在消费者线程里,当t达到10时,这里不用t++,就跳出while()循环,消费者线程自然就终止。这样设计满足了,当生产者生产30个产品时就终止生产者线程,生产者线程终止消费者线程也得终止的要求。 生产者从文件so.txt读取数据进行生产,这个文件里的数据是一连串的字符从a--z的组合,没有空格或其他字符。文件内容的格式没有特殊要求。

组织行为学标准实验报告

实验报告一 学生姓名:学号:指导教师: 实验地点:上课教室实验时间: 一、实验室名称:工商管理实验室 二、实验项目名称:管理视频案例——团队法则“项目团队创新” (innovative project reams) 三、实验学时:2学时 四、实验原理: 团队是由员工和管理层组成的一个共同体,该共同体合理利用每一个成员的知识和技能协同工作,解决问题,达到共同的目标。 从群体发展到真正的团队需要一个过程,需要一定的时间磨练。这个过程分为以下几个阶段:第一阶段,由群体发展到所谓的伪团队,也就是我们所说的假团队。第二阶段,由假团队发展到潜在的团队,这时已经具备了团队的雏形。第三阶段,由潜在的团队发展为一个真正的团队,它具备了团队的一些基本特征。 五、实验目的: 通过本实验,使学生对团队及团队建设有感性认识,提高学生的合作精神和团队意识。 六、实验内容: 纸质资料见资料一 音像资料见管理视频案例 资料一:大约七月中旬上午十点钟。你乘坐的飞机坠落在美国西南部索纳拉大沙漠中,除了一些灌木丛外一无所有。当时气温将达摄氏45度,所以地表温度会接近摄氏50度。飞行员和副飞行员都死了,其他人都活着。 飞行员在飞机坠落前没有告诉任何人飞机所在的位置,只有一些人在出事前向外观看,根据地上的标记,估计偏离航线有105公里。在出事前几分钟,飞行员曾告诉你:在东北方向距离113公里的煤矿上,有人居住。你穿着单薄的衣服,短袖衬衫、短袜和皮鞋,每个人都带有手帕。你们小组总共有25英镑、一盒烟和一支圆珠笔。 问题:请将下列15件物品根据重要性排列为1至15,以便在飞机着火前(20分钟后)尽可能多的取得必需品。你们小组的成员决心呆在一起。相信共同努力能使你们成为幸存者!

生产者与消费者实验报告

生产者和消费者实验报告 【实验目的】 1.加深对进程概念的理解,明确进程和程序的区别。 2.进一步认识并发执行的实质。 3.验证用信号量机制实现进程互斥的方法。 4.验证用信号量机制实现进程同步的方法。 【实验要求】 用c语言编程搭建“生产者和消费者”经典进程通信问题的环境。要求程序运行时,按任意键停止,显示当前系统的各个参数的值。提交实验报告,以及相关程序列表。打包成附件上传。 【实验环境】 Visual C++6.0 【实验内容】 1.了解经典同步问题“生产者和消费者” 生产者与消费者可以通过一个环形缓冲池联系起来,环形缓冲池由几个大小相等的缓冲块组成,每个缓冲块容纳一个产品。每个生产者可不断地每次往缓冲池中送一个生产产品,而每个消费者则可不断地每次从缓冲池中取出一个产品。指针i和指针j分别指出当前的第一个空缓冲块和第一个满缓冲块。 2.分析和理解 (1)既存在合作同步问题,也存在临界区互斥问题 合作同步:当缓冲池全满时,表示供过于求,生产者必须等待,同时唤醒消费者;当缓冲池全空时,表示供不应求,消费者应等待,同时唤醒生产者。 互斥:缓冲池显然是临界资源,所在生产者与消费都要使用它,而且都要改变它的状态。 (2)基于环形缓冲区的生产者与消费者关系形式描述: 公用信号量mutex:初值为1,用于实现临界区互斥 生产者私用信号量empty:初值为n,指示空缓冲块数目 消费者私用信号量full:初值为0,指示满缓冲块数目 整型量i和j初值为0,i指示首空缓冲块序号,j指示首满缓冲块序号 (3)PV原语 var mutex,empty,full:semaphore; i,j:integer;buffer:array[0...n-1] of item; i:=j:=1; Procedure producer; begin while true do begin

消费者行为学报告

《消费者行为学》课内实验报告书

目录 1前言 (1) 1.1调研目的 (1) 1.2调研方法 (1) 1.3数据来源 (1) 2.消费者自身因素 (1) 2.1消费者的经济状况 (1) 2.2是消费者的职业和地位。 (2) 2.3是消费者的年龄与性别。 (3) 2.4消费者的性格与自我观念。 (3) 3.社会因素 (5) 3.1社会文化因素 (5) 3.2社会相关群体因素 (5) 4.企业和产品因素 (7) 4.1企业因素 (7) 4.2产品因素 (8)

1前言 1.1调研目的 响消费者购买行为的主要因素有消费者自身因素、社会因素、企业和产品因素等。分析影响消费者购买行为的因素,对于企业正确把握消费者行为,了解消费者使用增值业务的目的、态度、关注的核心问题、阻碍使用的因素等问题,为进行消费者行为深度研究提供客观数据支持,并为企业营销的进一步发展提供建议。使企业有针对性地开展市场营销活动,对企业的营销计划具有极其重要的意义。 1.2调研方法 本次问卷调查主要通过网络问卷调查来进行消费者行为分析,但是对于消费者一些行为的研究,仅通过问卷调查很难深入了解,特别是涉及到一些内在、深层的心理需求和行为动机。因此,我认为在增值业务开发过程中,仅有“消费者调查”是不够的,还需要进行深度的“消费者行为研究”。 1.3数据来源 本次调查采用网络问卷调查,样本由随机上网访问者组成,参与调查的人数为37,有效数据为37 份。 2.消费者自身因素 2.1消费者的经济状况 消费者的经济状况即消费者的收入、存款与资产、借贷能力等。消费者的经济状况会强烈影响消费者的消费水平和消费范围,并决定着消费者的需求层次和购买能力。消费者经济状况较好,就可能产生较高层次的需求,购买较高档次的商品,享受较为高级的消费。相反,消费者经济状况较差,通常只能优先满足衣食住行等基本生活需求。

1实验1:生产者消费者问题

1实验1:生产者消费者问 题 -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

福建农林大学金山学院实验报告 系(教研室):专业:计算机科学与技术年级: 实验课程:生产者与消费者实验姓名:学号: 实验室号:1#608 计算机号:实验时间:指导教师签字:成绩: 实验1:生产者消费者问题 一、实验目的 生产者消费者问题是操作系统中经典的同步和互斥问题。通过实验,要求学生掌握两者之间的同步信号量和互斥信号量的使用,更深刻了解临界资源、同步和互斥的概念。 二、实验要求 1.一组生产者通过一个具有N个缓冲区的缓冲池循环不断地向一组消费者提供 产品。 2.建一个队列, 队列的长度由n记录, 定义两个指针, 分别指向队列的头和尾消费 者从头指针读取数据,每读取一个数据把n--,生产者把数据写入尾指针, 每写 入一个数据就n++,当n=N的时候生产者暂停写入数据。 3.注意:缓冲池队列,用互斥锁保护。 三、实验内容和原理 1.分别画出生产者和消费者的流程图

2.针对生产者和消费者问题,可以分为哪几种情况,使用了哪些原语分别代表什 么意思过程如何阐述哪些进程之间存在同步,哪些进程之间存在互斥。 3.缓冲区是否为临界资源是否可以循环使用通过什么来实现举例说明(可画图) 四、实验环境 1. 硬件:PC机; 2. 软件:Windows操作系统、。 五、算法描述及实验步骤 #include <> #include const unsigned short SIZE_OF_BUFFER = 10; unsigned short ProductID = 0; unsigned short ConsumeID = 0; unsigned short in = 0;

实验报告五 生产者和消费者问题

实验报告五 ——生产者和消费者问题 姓名:丛菲学号:20100830205 班级:信息安全二班一、实习内容 ?1、模拟操作系统中进程同步和互斥 ?2、实现生产者和消费者问题的算法实现 二、实习目的 ?1、熟悉临界资源、信号量及PV操作的定义与物理意义 ?2、了解进程通信的方法 ?3、掌握进程互斥与进程同步的相关知识 ?4、掌握用信号量机制解决进程之间的同步与互斥问题 ?5、实现生产者-消费者问题,深刻理解进程同步问题 三、实习题目 ?在Linux操作系统下用C实现经典同步问题:生产者—消费者,具体要求如下: (1)一个大小为10的缓冲区,初始状态为空。 (2)2个生产者,随机等待一段时间,往缓冲区中添加数据,若缓冲区已满,等待消 费者取走数据之后再添加,重复10次。 (3)2个消费者,随机等待一段时间,从缓冲区中读取数据,若缓冲区为空,等待生 产者添加数据之后再读取,重复10次。 ?提示 本实验的主要目的是模拟操作系统中进程同步和互斥。在系统进程并发执行异步推进的过程中,由于资源共享和进程间合作而造成进程间相互制约。进程间的相互制约有两种不同的方式。 (1)间接制约。这是由于多个进程共享同一资源(如CPU、共享输入/输出设备)而引起的,即共享资源的多个进程因系统协调使用资源而相互制约。 (2)直接制约。只是由于进程合作中各个进程为完成同一任务而造成的,即并发进程各自的执行结果互为对方的执行条件,从而限制各个进程的执行速度。 生产者和消费者是经典的进程同步问题,在这个问题中,生产者不断的向缓冲区中写入数据,而消费者则从缓冲区中读取数据。生产者进程和消费者对缓冲区的操作是互斥,即当前只能有一个进程对这个缓冲区进行操作,生产者进入操作缓冲区之前,先要看缓冲区是否已满,如果缓冲区已满,则它必须等待消费者进程将数据取出才能写入数据,同样的,消费者进程从缓冲区读取数据之前,也要判断缓冲

组织行为学实验报告

“组织行为学”试验报告谈谈对卡特尔16PF实验的体会 学院管理学院 专业人力资源管理 年级班别 2011级(2)班 学号 3111004607 学生姓名罗志赢 指导教师惠青山 2013年12月8日

在这次的组织行为学的实验中,我做了卡特尔16PF实验。在这个实验中,主要测试了我“与他人的关系方面”、“决策能力方面”、“做事风格方面”、“心理健康方面”四个方面,通过这些方面来进一步认识自我。 在与他人的关系方面,我与人交往以及合作能力处于中等水平。活泼,健谈,经常主动与他人交谈。在社交场合中较为轻松,与人交往表现得不卑不亢,但又不会过分突显。对多数人能较为公开展示自我,比较直率。独立性不是很强,但也不经常依赖他人;在决策能力方面,思维敏捷,反应迅速,学习能力强。比较遵循常规,又能保持一定的开放性。即关注事情的细节,又能从广阔的思路去考虑问题。做判断和决策的时候,能够在权衡感性和理性两个方面的需求;在做事风格方面,做事时候,独立性不是很强,但也不经常依赖他人。对新事物和新观念并不排斥,同时能够考虑到传统的行为标准。有恒负责,做事尽职。比较能够克制自己,对事情能够进行事先计划和组织,有时候也会较为放任;而在心理健康方面,情绪稳定,能够冷静应付现实,能振作勇气,维持团体的精神。对刚认识的人较警觉,但完全了解他人以后,会乐于接受他们。对自己的长处或缺陷有比较现实的认识,能为自己的失误承担责任。心平气和,很少紧张,对他人也很少感到不满或者厌烦。 通过这次的卡特尔16PF实验,我对自己有了更加全面深入的了解。一直以来,对自己的认识都是一种比较模糊的状态,对自己的认识不深入。通过这一次的卡特尔16PF实验,我清楚的知道了自己是一个比较中肯的人,能在大众中适当的保持自己的性格,温和待人。做事有自己的一套,比较的实际化。细心而又有些淡定。这些都是我的优点。相同的,凡事都有两面性。我的独立性不是很强,有时候处事偏于感性,较为放任,还带有些强势。这些方面都是需要我对自己进一步的认清自己的不足,有待于我去努力和完善自我。正所谓人无完人,我很多的方面虽然无法达到尽善尽美的境界,也还有很多的不足,但是我知道,只要我坚持努力不懈,凡事尽自己的最大的努力去做到最好,就已经是一种很可贵的东西了。我会不时的通过测试来监督自己,鞭策自己去做得更好,一步一步的向着自己的目标靠近。

操作系统课程设计——生产者消费者问题

计算机与信息学院 《操作系统与编译原理联合课程设计报告》 专题:操作系统部分 学生姓名: 学号: 专业班级: 指导教师: 2014 年 7 月

一、设计目标 多进程/线程编程:生产者-消费者问题。设置两类进程/线程,一类为生产者,一类为消费者;建立缓冲区的数据结构;随机启动生产者或消费者;显示缓冲区状况;随着进程/线程每次操作缓冲区,更新显示。 二、设计思路 1.开发平台:Visual C++6.0 2.设计思路: 若干个生产者和若干个消费者共享一个有界缓冲区,生产者生产产品,消费者消费产品。消费者进程与生产者进程随机切换。生产者将产品生产出来后,存放到缓冲区中的空闲位置并将此缓冲区的标识置为满,若此时无空缓冲区,则进行等待。消费者将标识为满的缓冲区中的产品取出,进行消费并将该缓冲区的标志位置为空,若此时无满的缓冲区,则进行等待。 由于消费者与生产者共享缓冲区资源,且缓冲区资源属于互斥资源,所以生产者和消费者需要按照一定的规则访问缓冲区,访问规则如下: (1)当一个消费者访问缓冲区时其他消费者不允许访问缓冲区,同样的,当一个生产者访问缓冲区时其他生产者也不能访问缓冲区。 (2)当消费者访问缓冲区资源时生产者不能访问,反之,当生产者访问缓冲区资源时消费者不能访问。 (3)当缓冲区中无产品时,消费者不能访问;当缓冲区已满时,生产者不能访问缓冲区。 生产者与消费者问题伪代码如下: VAR mutex, empty, full: semaphore := 1, n, 0 ; in,out: integer := 0, 0 ; Buffer: array [0..n-1] of item ; Parbegin Producer: begin repeat produce an item in nextp; wait(empty); wait(mutex); Buffer(in) := nextp; in := (in + 1) mod n; signal(mutex); signal(full); until false end Consumer: begin repeat

组织行为学实验报告-1

组织行为学实验报告— 恋爱行为对个性和人格特质的改造 【实验描述】 通过对实验对象的调查和访问,记录下他们在恋爱前后的状态,并得出恋爱行为对他们人格个性的改造的结果。 【实验前的个性行为特征】 恋爱前的男生S的个性特征:在谈恋爱前,S是比较爱自由,比较随意的男生,与周边的女性朋友都有很好的关系,对爱情的看法不是很明确。有时会有完美主义的倾向,对恋爱抱有理想主义的幻念。由于是初恋,对恋爱的美好程度有很高的期望,对感情也有很坚定的看法。在性格上,S很懂事,但是有时也很固执,虽然是一个男生,但是他有很细腻的感情,或者说很敏感,对一些细节很看重,做事很细心。个性要强,有着很强的好胜心和自尊心。此外,他还有很好的与人交流能力,做事有原则,有自己的主见。但是性格中有缺陷,没耐心,易急躁,习惯生闷气。 恋爱前的女生C的个性特征:女生C也是初恋,恋爱前,在他人看来也容易相处,很大气,开朗,有着像男生一般的性格。对恋爱没有多少期望,似乎没有做好准备,有或无都无所谓,很理性,害怕受到伤害,不愿意把事情想得太完美,她内心其实也有很多想法的。C很懒,喜欢沉浸在自己的圈子中,不愿意去和人交际,用她自己的话说,那样太累,而她自己很懒。她不善于表达内心的情感,或者说羞于表达。她喜欢玩,喜欢吃,认为年轻就该好好享受,做自己想做的事,不太会考虑他们的想法。人好,容易被他们说动,但是做事犹犹豫豫,不果断。 【实验方法】 ●访问调查对象面对面交流 ●观察调查对象一段时间 【实验过程】 ◆观察时间段 2012年10月——2013年1月(之前情况由访谈得知)◆观察方式观察调查对象的言行心情 ◆行为刺激方式对调查对象进行言语的交流并加以影响 ◆记录实验过程记录实验前后变化和过程的细节 ◆刺激的结果能很好的发现各自性格的缺陷并加以改进两人关系更好 【实验过程的具体内容】 恋爱双方是高中同学,3年的同学,1年半的同桌,有意思的是经过他们班主任的撮合他们最终在一起了。S在他们吃散伙饭后的晚上表白的,他们班主任把C单独叫出去,问她对S有没感觉,她有点害羞,说不知道,接着班主任把S 叫出去,问他喜不喜欢C,S说喜欢,然后班主任把刚刚的经过告诉他,让他去追C。在和S交流时,他说他班主任应该很早就知道他们相互有意。在表白的过程中,S也没遇到什么困难,毕竟有较好的感情基础,但是C担心他们不大可能在同一个城市上大学,所以对他们的未来不太敢相信,后来女生还是答应了。幸运的是他们后来填在了同一城市。他们上的都是一本,在高考后能找到恋人,而且成绩也不错,在他们高中同学眼里,他们应该是情场考场双丰收。但是女生C

生产者消费者问题设计与实现

操作系统课程设计任务书 学院计算机与信息工程专业计算机科学与技术课程名称操作系统题目生产者消费者问题设计 与实现 完成期限自2015年6月23日至2015年6月29日共1周 内容及任务一、项目的目的 1.理生产者消费者问题基本概念和工作原理,以及实现技术; 2.理解并掌握生产者消费者问题相关算法,以及它的实现方法; 3.掌握在eclipse环境下,系统开发的基本步骤和方法; 4.掌握在eclipse环境下,设计和开发一个简单的生产者消费者问题系统来模拟操作系统中生产者消费者问题。 二、项目任务的主要内容和要求 1.精读并理解和掌握生产者消费者问题; 2.编写程序来模拟生产者消费者问题的实现; 3.编写应用程序测试生产者消费者问题,并显示结果。 三、项目设计(研究)思路 本课程设计的基本思路是,首先理解和掌握生产者消费者问题的基本思想和原理,然后根据理解的基本思想和原理编程实现生产者消费者问题,最后通过数据分析生产者消费者问题。 四、具体成果形式和要求 成果:生产者消费者问题程序语言实现;设计说明书。 要求:编写好的生产者消费者问题程序能够正确启动运行;设计说明书规范、合理。 进度安排 起止日期工作内容2015.6.23至2015.6.24熟悉相关内容 2015.6.25至2015.6.26 系统设计和实现 2015.6.27至2015.6.29 系统实现和撰写相关文档

主要参考资料1.《计算机操作系统》汤子瀛哲凤屏汤小丹主编西安电子科技大学出版社. 2.《计算机操作系统概论》陈宏杨忠耀主编重庆邮电大学出版社. 3.《计算机操作系统基本知识》廖成崔阳主编电子工业出版社. 4.《操作系统实现与设计》陆刚望能主编电子工业出版社. 5.《java程序语言设计》丁振凡主编,薛清华副主编清华大学出版社. 指导教师 意见 (签字):年月日 系(教研室) 主任意见 (签字):年月日

操作系统生产者消费者问题实验报告

实验报告二 实验名称:一、生产者-消费者问题的多线程解决方案 二、设计一个执行矩阵乘法的多线程程序 日期:2015-10-22 班级:13级计科学号:姓名: 一、实验目的 1.掌握线程的同步与互斥 2.掌握生产者消费者的实现问题 3.掌握多线程的编程方法 4.掌握矩阵乘法的基本计算原理以及实现 二、实验内容 1.生产者-消费者问题的多线程解决方案 2.设计一个执行矩阵乘法的多线程程序 三、项目要求与分析 1.请查阅资料,掌握线程创建的相关知识以及矩阵乘法的相关知识,了解java语言程序编写的相关知识 2.理解线程的实验步骤 在本次试验中,以“生产者-消费者”模型为依据,提供了一个多线程的“生产者-消费者”实例,编写java代码调试运行结果,得出相应的结论。 理解矩阵乘法的实验步骤 四、具体实现 1.生产者-消费者实例 (1)创建一个缓冲信息发送接收通道接口,并创建邮箱盒子类实现,主要代码如下: ength; j++) { ength; j++)

{ " "); } ""); } ""); } (1)创建多线程类,并实现Runnable接口同步对矩阵进行分行计算,主要代码如下: etName()+"\t开始计算第 "+(task+1)+"行"); for(int i=0; i<; i++) { for(int j=0; j<; j++) { [task][i] += [task][j] * [j][i]; } } } ; } (2)通过不断改变矩阵大小,线程数目,,调试程序,运行结果: 五、所遇问题与解决方法 1.在生产者-消费者多线程试验中,刚开始没有考虑到使用线程睡眠,运行结 果速度之快,没法观看数据变化,后面定义了睡眠控制,使得问题得以解决2.在多线程矩阵开发实验中,刚开始定义矩阵太小,测试结果不太明显,后面 通过把矩阵改大,并且线程数目不断变化使得结果明显。 六、实验总结 深刻了解了生产者消费者多线程,进一步理解了“生产者-消费者”模型。同时也掌握了一些java编程语言相关知识。多线程矩阵实验中,发现矩阵小时,线程越少,运行时间越长;而矩阵过大时,线程数量与运行时间成反比。

相关文档
最新文档