(1)创建生产者和消费者线程在Windows2000环境下,创建一个控制台进程,在此进程中创建n个线程来模拟生产者或者消费者。
这些线程的信息由本程序定义的“测试用例文件”中予以指定。
该文件的格式和含义如下:31P32P43C414P25C3124第一行说明程序中设置几个临界区,其余每行分别描述了一个生产者或者消费者线程的信息。
每一行的各字段间用Tab键隔开。
不管是消费者还是生产者,都有一个对应的线程号,即每一行开始字段那个整数。
第二个字段用字母P或者C区分是生产者还是消费者。
第三个字段表示在进入相应线程后,在进行生产和消费动作前的休眠时间,以秒计时;
这样做的目的是可以通过调整这一列参数,控制开始进行生产和消费动作的时间。
如果是代表生产者,则该行只有三个字段。
如果代表消费者,则该行后边还有若干字段,代表要求消费的产品所对应的生产者的线程号。
所以务必确认这些对应的线程号存在并且该线程代表一个生产者。
(2)生产和消费的规则在按照上述要求创建线程进行相应的读写操作时,还需要符合以下要求:①共享缓冲区存在空闲空间时,生产者即可使用共享缓冲区。
②从上边的测试数据文件例子可以看出,某一生产者生产一个产品后,可能不止一个消费者,或者一个消费者多次地请求消费该产品。
此时,只有当所有的消费需求都被满足以后,该产品所在的共享缓冲区才可以被释放,并作为空闲空间允许新的生产者使用。
③每个消费者线程的各个消费需求之间存在先后顺序。
例如上述测试用例文件包含一行信息“5C3l24”,可知这代表一个消费者线程,该线程请求消费1,2,4号生产者线程生产的产品。
而这种消费是有严格顺序的,消费1号线程产品的请求得到满足后才能继续往下请求2号生产者线程的产品。
④要求在每个线程发出读写操作申请、开始读写操作和结束读写操作时分别显示提示信息。
(3)相关基础知识本实验所使用的生产者和消费者模型具有如下特点:本实验的多个缓冲区不是环形循环的,也不要求按顺序访问。
生产者可以把产品放到目前某一个空缓冲区中。
消费者只消费指定生产者的产品。
在测试用例文件中指定了所有的生产和消费的需求,只有当共享缓冲区的数据满足了所有关于它的消费需求后,此共享缓冲区才可以作为空闲空间允许新的生产者使用。
本实验在为生产者分配缓冲区时各生产者间必须互斥,此后各个生产者的具体生产活动可以并发。
而消费者之间只有在对同一产品进行消费时才需要互斥,同时它们在消费过程结束时需要判断该消费对象是否已经消费完毕并清除该产品。
Windows用来实现同步和互斥的实体。
在Windows中,常见的同步对象有:信号量(Semaphore)、互斥量(Mutex)、临界段(CriticalSection)等。
使用这些对象都分为三个步骤,一是创建或者初始化:接着请求该同步对象,随即进入临界区,这一步对应于互斥量的上锁;
最后释放该同步对象,这对应于互斥量的解锁。
这些同步对象在一个线程中创建,在其他线程中都可以使用,从而实现同步互斥。
2024/7/25 19:35:19 1.63MB 多线程同步生产者和消费者问题
1
编写一个银行新用户现金业务办理程序,使其模拟新用户到银行办理现金存取业务时的场景。
要求此场景中,要模拟出银行对用户到来的欢迎动作、对用户离开的提醒动作,以及用户的开户、存款和取款动作,在完成开户、存款和取款操作后,要提示用户的账户余额。
例如,一个新用户来到招商银行,首先银行要表示欢迎,然后银行工作人员会为用户办理开户手续;
开户后,用户先进行存款操作,之后又进行了取款操作,取款操作时需要用户输入正确的密码和取款金额需小于当前账户金额,如果条件不满足,系统产生异常。
当业务办理完,用户离开银行,银行提醒用户携带好随身财物。
至此银行新用户现金业务办理结束。
2024/7/23 4:40:14 199KB Java
1
在分布式集群环境中,如何对网格环境中的资源进行有效管理和合理调度至关重要。
采用静态固定资源分配等策略不能适应资源和用户请求的动态变化,容易产生资源碎片,造成网格资源利用率低等问题。
提出了一种基于分类挖掘的资源动态分配模型和算法,通过资源管理服务器中的守护进程,对集群中的任务动作进行分类挖掘,形成分类规则,用以指导资源的动态分配。
实验证明,相比其他分配策略和算法,DRA算法能较好地适应网格环境的变化,具有资源分配利用率高等优点。
2024/7/17 16:55:01 1.75MB 分类挖掘; 网格; 资源; 动态分配;
1
1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)2、帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。
3、上行、下行:设备到主机为上行,主机到设备为下行
2024/7/15 19:48:07 114KB USB
1
Blender的安装后所占空间很少以及可以运行于不同的平台。
虽然它经常不连说明文档或范例发布,但其拥有极丰富的功能,而且很大部份是高端模组塑造软体。
其特性有:  支持不同的几何图元,包括多边形网纹,快速表层塑模,曲线及向量字元。
  多用途的内部洵染及整合YafRay这个开源的射线追踪套件。
  动画工具,包括了反向动作组件,可设定骨干,结构变形,关键影格,时间线,非线性动画,系统规定参数,顶点量重及柔化动量组件,包括网孔碰撞侦察和一个具有侦察碰察的粒子系统。
  使用Python语言来创作及制作游戏及工作自动化脚本。
  基本的非线性影像编辑及制作功能。
  Game_Blender,一个子计划,用以制作实时的电脑游戏。
2024/7/13 11:02:07 1.68MB blender
1
VC++工程名称转换程序简介:如果您用VC++创建了一个庞大复杂的工程,而您又想重新命名它,这个软件将有助您在短短几秒钟内完成,减少了繁重的手动更改劳动!如果您想在以前用VC++创建的工程基础上作一些改动而生成另一个新的工程(老的工程保留),这将是您的最佳选择,并且简单快捷!使用本软件,将VC++工程文件改名,几而需简单几步即可以完成工程文件改名动作,并且自动命名由VC++工程向导生成的类、工程配置文件(*.dsp,*.dsw,*.clw,*.rc,*.rc2)、*.H文件、*.CPP文件、帮助文件(*.hpj,*.hm,*.hm等)、注册文件(*.rgs,*.idl,*.odl)等,几乎支持所有VC++工程向导生成的工程。
不会更改以前的工程文件,它只是生成了一个新的工程目录!请放心使用!
2024/7/7 12:40:28 98KB VC 6.0工具
1
MMD极乐净土动作数据使用方法:解压缩打开文件吧vmd格式文件拖入mikumikudance
2024/7/5 19:31:25 739KB MM
1
新闻管理系统(asp.net)我开发了两天,开发好的。
主要缺点是不支持图片欢迎大家修改完善安装步骤:1.首先您需要配置应用程序的运行环境。
配置方法分为两步:(1)安装Internet信息服务(需要用到系统安装光盘):打开\"我的电脑\"-〉\"控制面板\"-〉\"添加或删除程序\"-〉点击左边的\"添加删除Windows组件\",在弹出的窗口中选择\"Internet信息服务\"(IIS)(注:对于WindowsServer2003,\"Internet信息服务\"被包含在应用程序服务器里边,只需要勾选\"应用程序服务器\"即可),然后插入与当前系统相同的系统安装光盘,确定后开始安装。
(2)安装.NetFramework2.0,下载地址:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f52.直接压缩本系统装即可。
如果希望新建一个虚拟目录或网站,请在网站上边点击右键选择新建虚拟目录(Windows服务器版本里有才有\"新建网站\"选项).3.打开控制面板,管理工具,双击运行Internet信息服务。
依次打开网站默认网站找到虚拟目录,在右边右键选择main或是default.aspx,选择浏览即可。
asp.net常见错误及解决办法1.错误描述:位于Config目录内的Web.sitemap文件格式不正确。
或操作必须有一个可更新的查询分析:这可能是因为你使用了NTFS文件系统造成的,不恰当的NTFS授权也会导致这种错误。
网站Config和App_Data两个文件夹需要有读写的权限。
解决办法:分别在Config和App_Data两个文件夹上点击右键,选择属性,选择安全选项卡,察看Everyone用户是否有修改的权限,如果没有请勾选。
如果没有Everyone用户请依次点击添加、高级、立即查找,选中查找到的Everyone用户确定即可。
2.错误描述:无法显示XML页。
使用XSL样式表无法查看XML输入。
请更正错误然后单击刷新按钮,或以后重试。
....分析:这可能是由于你没有正确安装.netframework2.0的结果。
解决办法:打开IIS(即Internet信息管理器),在已安装的网站名称上边点击右键,选择属性,切换到Asp.net选项卡,察看ASP.Netversion(即Asp.net版本)的选项是否为空,如果为空请从下拉列表选择2.0.50727版本或更高版本。
3.无法找到该页分析:这可能是因为你使用的是WindowsServer2003操作系统。
解决办法:请打开IIS(Internet服务器),找到Web服务器扩展,设置Asp.Net为允许。
另一个可能的原因可能是因为你在后台启用了Url重写功能,如果你设置了非aspx扩展名的文件扩展名,那么你需要手动在IIS(即Internet信息管理器)里边进行设置,具体方法如下:首先在左边栏里需要设置的网站或虚拟目录上边点击右键并选择\"属性\",在\"虚拟目录\"选项卡中点击\"配置\",在打开的\"应用程序配置\"窗口中点击\"添加\",在可执行文件里边填写处理aspx文件的Dll文件路径,一般为c:\\windows\\microsoft.net\\framework\\v2.0.50727\\aspnet_isapi.dll,在扩展名里边填写你要模拟的文件扩展名,如.html.将\"动作\"限制为GET,POST,并勾掉\"确认文件是否存在\"前边的勾即可。
4.如果仍然不能解决问题,请重新安装.netframework2.0.
2024/7/5 9:12:10 218KB .net
1
NERDS(NERP)入门包简介和功能您好,我叫DamonYe,这是NERDS堆栈的样板!NERDS堆栈包括:Node.jsExpressReact,带SQL的Redux数据库(PostgreSQL,Sequelize)文件由特定域(包括样式表)构成。
终极版的文件被命名为这样的-ComponentNameActionCreator.js或ComponentNameReducer.jsJSX文件被明确标记为.jsx文件。
测试是通过Mocha,Chai,SuperTest和Enyzme完成的!测试文件位于特定组件/容器的目录中。
CSS是使用SASS预编译的,并直接导入到js文件中。
用户可以注册,登录和注销。
密码加密是通过bcryptjs完成的。
使用ReactRouter完成的单页应用程序样式。
使用react-redux的组件容器设计模式。
选择器用于简化状态管理,并放置在减速器文件中。
同步动作创建者,异步动作创建者和常量放置在动作创建者文件中。
包含种子文件seed.js可以轻松创建种子数据。
安装与设定如果你想修改NE
2024/7/5 6:56:32 186KB react redux nodejs javascript
1
通常在AllegroPCB设计后处理调整丝印时,往往需要逐个调整丝印方向和位置,简单而机械的动作,需要耗费大量时间。
由于人为操作,也很容易出现丝印交错现象,以致于设计完的PCB板出现严重质量问题。
运行本SKILL程序,无论多复杂的PCB板,1秒内就已调整好方向,并整齐地摆放于丝印框内。
包中包含有SKILL源代码,使用说明、操作视频文件,可轻松使用其功能。
2024/7/3 2:49:08 4.48MB Allegro SKIL 自动调整丝印
1
共 332 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡