精华内容
下载资源
问答
  • 这是一个用vs2008c#的Silverlight跟随鼠标的例子很有借鉴意义哦希望大家来下载
  • if(writecount == 0)//最后一个者才释放rsem,这时读者才有机会访问,读者也才有机会semWait(wsem) ,否则在没机会semWait(wsem),者当然可以继续 semSignal( rsem ); semSignal(y); } } ...

    这篇文章帮了我大忙,也让我更好地理解了信号量的用法,向原文作者致谢。

    转自http://www.linuxso.com/linuxbiancheng/13098.html


    千万要注意:readcount,writecount要设成共享变量(因为是进程),要不然可能会导致死锁

    所谓谁谁优先的问题,我认为主要体现在以下两点中:

    1.当低优先级进程(线程)获得临界区时,高优先级进程能很快从低优先级的进程中抢得访问权。

    2.当高优先级的进程获得临界区访问权时,低优先级得等到高优先级全部访问完的空闲时间才能抢得访问权。

    这两点中, 第一点一定得要,不然无法体现出优先的意思 。

    第二点可以根据程序的需要决定。


    程序摘自:《操作系统精髓与设计原理》

    /* program readersandwriters*/
    //读者优先,经过我修改了一点
    int readcount = 0;
    semaphore x = 1,z = 1, wsem = 1;
    void reader()
    {
    	while(true){
    		semWait(x);
    		readcount ++ ;
    		if(readcount == 1)
    			semWait(wsem);
    		semSignal(x);
    		
    		READUNIT();//读数据
    
    		semWait(x);
    		readcount --;
    		if(readcount == 0)
    			semSignal(wsem);
    		semSignal(x);
    	}
    }
    void writer()
    {
    	while(true){
    		semWait(z);//自己加的,不过这样降低了写操作的效率,但满足了以上2点。去除z信号后,就只满足第1点,可以自己分析分析
    		semWait(wsem);
    		WRITEUNIT();//写数据
    		semSignal(wsem);
    		semSignal(z);
    	}
    }

    程序中semWait 就是指信号量P 操作, semSignal 就是指V

    首先明白一点 如果某一信号初始值为1 ,且在一个函数中是P,V操作是成对出现 ,那么这个信号量就是用来起互斥作用!

    信号量x ,是用来保证readCount 自加自减操作和if条件语句操作的原子性。

    来分析下为什么这个程序是读优先呢?

    1.考虑下这种情况:如果读者已经获得临界区的访问权,那么当读者连续不断时(即中间间隔小),也就是说当一个进程读完前,另一个进程也进入到了临界区。 此时的话,任一时间在临界区中的写进程者会大于一 。 即使来了写进程,也只能有一个写者阻塞在wsem信号中,其余全阻塞在z信号中。。。直到某一时刻,无读者在临界区时,才有机会写临界区。

    2.在考虑一种情况:写进程已经获得了临界区的访问权,且写进程也很密集。 此时读进程能不能优先得到访问权而不用等到写进程全部访问完呢?

    答案是能。  写进程很多,那么一次又只能有一个写进程访问临界区。则其余的写进程都会在z信号中阻塞,排队且。 如果读进程也想访问了,读进程就会在wsem信号中阻塞排队即只有读进程会在wsem中阻塞排队。   注意:当此时的写进程一旦完成访问临界区WRITEUNIT . 下一句semSignal(wsem) , 好, 此时阻塞在wsem队列中的读进程就抢得到临界区的访问权。。

    综上所述:在读者优先的程序中:写进程只有等待无读者访问临界区的时刻,才能得到访问权 ; 读进程在任意时候都可以得到访问权。

    阻塞在wsem队列中最多只有一个写者 ,其余的写者阻塞在z信号中。  wsem队列中当然最多可能有有限个写者(因为写者能有很短的时候内得到访问权)



    //写者优先

    /*program readersandwriters*/
    //写者优先
    int readcount , writecount;
    semaphore x = 1, y = 1, z = 1, wsem = 1 , rsem = 1;
    void reader()
    {
    	while(true){
    		semWait(z);//z信号用来保证阻塞在rsem信号中排队的读者至多只有一个。其余的阻塞在z上。
    			semWait(rsem);
    				semWait(x);//保证下面3句操作的原子性
    					readcount ++;//在这里,当有写者出现时,由于rsem的阻塞,readcount的值不会大于1
    					if(readcount == i)//i应该是1才对
    						semWait(wsem);//为了让真正执行READUNIT()时没人打扰
    				semSignal(x);
    			semSignal(rsem);//写者抢占访问权的时机!
    		semSignal(z);
    
    		READUNIT();
    
    		semWait(x);
    			readcount --; //由于上面readcount只能为1,所以下面语句必然执行
    			if(readcount == 0)
    				semSignal(wsem);
    		semSignal(x);		
    	}
    }
    
    void writer()
    {
    	while(true){
    		semWait(y);
    			writecount ++;
    			if(writecount == 1)
    				semWait(rsem);//第一个写者阻塞地方
    		semSignal(y);
    
    		semWait(wsem);//为了让真正执行WRITEUNIT()时没人打扰
    
    			WRITEUNIT();
    		semSignal(wsem);
    
    		semWait(y);
    			writecount --;
    			if(writecount == 0)//最后一个写者才释放rsem,这时读者才有机会访问,读者也才有机会semWait(wsem)                                              ,否则在没机会semWait(wsem),写者当然可以继续
    				semSignal(rsem);
    		semSignal(y);
    	}
    }

    同前面一样, y是用来保护写者中对writecount操作的原子性。

    1.当读者获得了访问临界区的权利时,且读者进程访问的很密集时(即很多读者都需要访问),写者如何抢得访问权。

    当读者获得访问权时即有一个进程正在执行READUINT操作时。和上一个读者优先程序中的写者差不多,如果没有写者,那么读者就能一个接一个到达临界区访问。但是因为READUINT操作前由于有z信号和rsem信号的互斥作用。使得读者一个只有一个通过这一段代码,其余的者阻塞在z信号中。进入临界区时是依次进入的(但出来不一定是先进先出) 。 一旦此时来了一个写者,他就会阻塞在rsem信号中。等会此时的读者刚一执行完semSignal(rsem)时,那么写者就得到rsem信号可以继续执行了。然后写者就只用等待读者中已经进入临界区的出来就能执行了。  

    2.当写者获得临界区的访问权时,读者只能等到临界区空闲时才能得到临界区访问权。

    因为当写者获得临界区时,所有的读者都会阻塞在z信号和rsem信号中。   而只有最后一个写者访问完临界区时,才会semSignal(rsem), 使得阻塞在rsem中唯一的读者获得临界区访问权。


    z信号的作用是 当读者获得权限时, 此时来的写者不用等待他前面所有的读者都访问完才访问 。  因为z信号使得在rsem信号队列中至多只有一个读者阻塞




    转载注明出处


    http://www.linuxso.com/linuxbiancheng/13098.html
    展开全文
  • TCP/IP 聊天QQ c#vs2005 +sql2005聊天 socket 点对点聊天程序新手入门经典加我QQ272876047很有借鉴意义
  • 2010年过360自启动,有借鉴意义:最近发现360另一漏洞,360的主动防御程序360Tray.exe程序退出后,HIPS保护就基本上不起什么作用,只留一个ZhuDongFangYu.exe保护自身。而360Tray.exe不是系统进程,在系统关机或注销...
  • 大学生为什么要博客?意义

    千次阅读 2020-02-17 21:39:23
    为什么要博客? 1,弥补自身学习时间不足 回想起刚上大学,学校老师建议我们学着博客,等到毕业有一份自己的博客可以展示,既提升自己又受益他人,现在看来有些晚。 2,表达能力 用文字把事讲明白。的确有点难 3...

    为什么要写博客?

    1,弥补自身学习时间不足

    回想起刚上大学,学校老师建议我们学着写博客,等到毕业有一份自己的博客可以展示,既提升自己又受益他人,现在看来有些晚。

    2,表达能力

    用文字把事讲明白,真的是一件比较难的事情.

    3,高效率学习

    艾宾浩斯记忆曲线,艾宾浩斯遗忘曲线
    总结来说就是,你上课记住,但会忘得很快,要反复看反复记忆。
    最佳学习方法就是,学会后给他人讲,反复记忆。

    4, 直接收益

    大学生刚上学就业慌得一匹,写博客有利于面试,面试时有博客或自己的项目都是加分项。

    5, 积累性学习法

    一天看完一本书当然不科学,每天积累小知识就不会厌倦。

    6, 直面回答

    因为要写这方面的知识,事先一定会先借鉴他人的文档,在写下自己的想法的时候,自己与他人的想法便会出现偏差,从发现偏差->纠正自身->换位理解,你就学会了这项知识点,这个博客就变得有意义。

    7,别人的博客写的那么好,自己写和别人差太多了,自己写还有意义吗?

    博客盗用现象很多,你的原创带来的是你自己的收益,买来的会比你自己写的更好,但没太大意义。自己写的博客像个憨憨也没关系,写出来就是给别人看的。

    8, 看完了,然后呢

    (1)做点什么,有利于你当前知识的进步,积累性学习也好,总之别闲着。
    (2)你总是看着别人做,自己当然不是有进步(别人好与坏都与你无关).

    子乔语录

    展开全文
  • FPGA项目经验借鉴

    千次阅读 2012-02-17 12:59:32
    就在此刻又一个FPGA项目宣告结题,好多感受趁着现在还新鲜着,出来和大家一起分享。不对之处,希望得到大家的指正。另外1234并没有绝对顺序,都是有感而发,随性而。 1. 要和人配合。以我们做硬件的工程师为例...

    做了5年的FPGA了。手中经历的项目也不在少数。就在此刻又一个FPGA项目宣告结题,好多感受趁着现在还新鲜着,写出来和大家一起分享。不对之处,希望得到大家的指正。另外1234并没有绝对顺序,都是有感而发,随性而写。

    1. 要和人配合。以我们做硬件的工程师为例,测试的时候一般都需要软件的配合,一个对硬件来说无比复杂的工作,可能在软件工程师看来就是几行简单的代码。所以要和人配合,多听听别人的意见,这样必然可以产生新的 know-how 从而加快测试和开发的速度,退一步讲,至少没有坏处。

    2. 测试还是要别人来做。开发者看待自己的产品有如看待自己,大多是没有勇气去发现缺点的。一是源自自尊心,二是为了避免额外的工作。所以就算有问题,如果不严重就藏着掖着。但是这对项目来说是不行的,所以测试,verification,一定要旁人来做。

    3. 多点时间思考。出现问题后,不要急着修改。要思考推测可能的原因,想清楚后把这些可能的原因都用debug pin或者chipscope引出来。

    4. 注意复用已有的debug pin。很多时候,在测试过程中产生了一大堆测试信号,但是时间一长就忘了复用。实际上,当一个问题产生的时候,通过反复观察已有的debug-pin或许足以发现问题根源,而无需再引出新的pin,并浪费时间去综合和PAR。

    5. 仿真加时序足矣。数字电路在时钟同步的设计原则下,其功能通过simulation就可以验证。simulation的结果和PAR后产生的FPGA-image完全等价。当然FPGA也要遵循同样的设计原则:即时钟同步。所以对于PAR的结果首先就要确保其时钟同步的特性。体现为寄存器之间的path必须在一个时钟周期内完成。(当然有其他约束的例外。)同时要满足FPGA器件的setup和hold要求。一旦出现timing-error必须通过各种途径消除error,因为error的存在,意味着时钟同步的大前提已经被破坏,这时,simulation取得的结果和FPGA是不等价的,继续测试也毫无意义了。

    6. 注意不可控的接口部分。FPGA内部的寄存器之间的timing完全可以通过PAR报告来确认是否有问题。但是和外界的接口部分却充满了疑问。我们一般通过假定的input-delay和output-delay来对接口部分进行约束。由于从一开始就施加的是假定的delay,所以即使没有timing-error,其结果也存在诸多疑问。以我正在进行的测试为例,模块内部loopback测试完全正常,但是一过cable,传到对方FPGA,则马上产生很多误码。由于simulation没有问题,所以必然是我们的某个假定出现了问题,尤其是时钟同步的假定会得不到满足。这时候,就要想尽一切办法,使接口也满足假定的条件,或者调整设计,将不理想的接口adapting成理想的接口。

    7. 向直接上司汇报情况,寻求各种可能的许可。懒得向直接上司汇报情况时,万一出现进度或者结果不符,所有责任都需要本人承担。如果提前向上司汇报情况并取得许可,则一切后果都在可控范围内。比如,工作繁忙时又被派给新的任务,则不能一味逆来顺受。应该向上司说明困难,并提前想好一个可行的解决方案供上司参考。

    8. 外部接口是最大障碍。如前所述,FPGA内部如果timing没有问题的话,一般和仿真结果是一致的,问题是外部的接口,包括cable连线等,不在我们确切控制的范围内,比如其延时特性在40Mhz下仍然正常,但是在80Mhz时可能出现不可预料的情况。所以应该尽量使用经过验证的“cable--frequency”组合。或者通过设备测量并确认外部接口的延时特性。这样可以进行有针对性的调整。我最近的教训就是花了整整一个月调整并测试内部的结构,但是仍然失败。结果发现由于cable的问题,80Mhz的信号(数据+使能+others)无法正常并行传输。如果换成40Mhz的信号就通过了。

    9. 综合PR后的结果要和代码等价。前面提到仿真加时序足矣,这里面的前提是PR的结果和原始代码要等价。为了确认这一点,就要把握syn和pr过程中的所有warning以及error,warning的内容不是完全可以忽略的。要特别关注综合报表中的以下内容:unused ports, removal of redundant logic, latch inference,simulation mismatch等等。在报表中输入关键字查找即可。

    展开全文
  • 因此想请教一下前辈们:在发表文章的过程中有哪些经验可借鉴? 补充一点信息: 我指的不是普遍适用的学术型文章的写作方式:比如用语要精练准确、注重表达的逻辑性之类,而是诸如: 1、是先不管格式篇幅图片...
    提问:
    将要开始写论文发表了,虽然之前也有过不是一作的文章,但文章不是我写的。因此想请教一下前辈们:在发表文章的过程中有哪些经验可借鉴?

    补充一点信息:
    我指的不是普遍适用的学术型文章的写作方式:比如用语要精练准确、注重表达的逻辑性之类,而是诸如:

    1、是先不管格式篇幅图片要求一类随便写一个版本,然后再在其上按照具体的杂志要求修改,还是一上来就按某具体杂志的要求来写?

    2、开始写文章的时候是要先想好可能被argue的内容,然后再以此构建文章整体的结构;还是不管那些,先构建文章整体结构,再考虑可能被argue的内容?

    3、一些细节性的东西,考虑到放得太多可能让人眼花缭乱反而不清晰,放的太少又不充足。那么哪一类该放进去,哪一类不该放进去?


    回答:
    成楚旸   ,专栏“化学札记”已开通,欢迎关注
    收录于  知乎圆桌    编辑推荐  袁霖 等 79 人赞同
    笨猫猪  ,模式识别 | 计算机视觉
    何史提  ,站在巨人肩膀上
    刘巍然-学酥  ,PhD/PKE/Java/听译
    收录于  知乎圆桌    编辑推荐  袁霖 等 78 人赞同
    王洋  ,MGC301剧场支配人
    渠志倍  ,论文写作达人
    Frank Ren  ,PhD MSE/Chemistry/Physics
    张浩千  ,合成生物学
    立党  ,在北京动物园当动物
    Hwizhi  ,In collective intelligence I trust
    刘知溪  ,个人网站读思(read-think.com
    马宗伟  ,物理学渣一枚
    Luyao Zou  ,光谱学/物理化学/文理叠加态
    Serena Yu  ,医学PhD
    李群  ,市场微结构/博弈论/经典物理/科幻
    匿名用户
    展开全文
  • 学习别人的方法,借鉴

    千次阅读 2012-10-10 02:51:20
    本人喜欢博客,所以总结最近三个月的工作和学习需要参考之前的博客文章---csdn@PHP淮北; 列个表格吧,看着也比较方便: 时间 事项 六月 七月 八月 九月 工作任务 ...
  • 图像处理中掩膜(mask)的意义

    万次阅读 多人点赞 2016-12-05 17:27:18
    刚开始涉及到图像处理的时候,在opencv等库中总会看到mask这么一个参数,非常的不理解,在查询一系列资料之后,下它们,以供翻阅。 数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在半导体制造中,许多芯片...
  • 自己的计算器软件

    2011-10-14 19:23:04
    自己的计算器软件,其中用到了比较浮渣的逻辑运算,有比较大的借鉴意义
  • vc++2008的拼图游戏

    2009-10-08 19:47:46
    vc++2008的拼图游戏,其中自己了类,游戏可以选择难度,可以自定义换图片,希望对大家有借鉴意义
  • Xilinx与ansoft合作的一篇PI论文,很有借鉴意义,请大家参考。
  • 有个朋友说,文章要解决一个问题,确实是。但是干货技能贴很多,我更愿意输出的是一种分析、总结,是一种思维碰撞点,也是下次引用时的本质对照。 这篇完整的素材收集、产品体验、用户调研费时近一个月,至少现在...
  • FlyAi实战之MNIST手写数字识别练习赛(准确率99.55%)

    千次阅读 热门讨论 2019-10-22 19:29:11
    这个想法最初是来源于用小的转换来改变训练数据,以重现某人在一个数字时发生的变化,尤其适用于数据量较小的情况。以改变数组表示的方式改变训练数据,同时保持标签不变的方法称为数据增强技术。一些常用增强是...
  • 用C#的俄罗斯方块

    2009-08-19 09:21:16
    呵呵,下者从速!!!实现了基本功能,很有借鉴意义……
  • vb多功能表的程序源码,非常有借鉴意义!涉及比较多的函数和功能!
  • ESSAY的十大误区

    2011-10-27 05:54:16
    一个教大家如何论文的资料,里面包含了10大点,对于在国外英语国家的同学学习,借鉴有着十分重要的意义
  • Splunk作为Gartner象限的领导者,其SPL设计思路具有很大的参考意义。 SPL在大数据领域 SPL的目标 SPL要做的是数据分析和可视化,在90%的应用场景中无需代码,能够通过比SQL更简练的语句实现复杂的需求。 SPL需要...
  • 竞品分析怎么

    千次阅读 2018-06-14 08:50:35
    核心的目标用户相同但是解决的需求不同的产品,其实严格意义上来说不算是竞品,甚至一般来说可以是合作伙伴,但是不管是什么,它们对我们自己的产品也是有很多借鉴价值的。 举个可能不太恰当的例子,比如说: 一...
  • 这篇文章比较不错,很有借鉴和应用的价值   说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情。用户表结构的设计,算是整个后台架构的基石。如果基石不稳,待到后面需求...
  • 上次了篇文章来阐述几何投影与傅里叶级数的联系,今天我想谈谈几何投影与最小二乘法的联系,这种联系的好处是不管多复杂的公式,又可以被瞬间记住了。本文的中心思想是:最小二乘法中的几何意义是高维空间中的一个...
  • 自己编写的示例程序,对初学着很有借鉴意义。 WCF文件传输示例,大文件采用stream传输,有效减少内存占用。
  • 带你制作百词斩单词表读写插件

    万次阅读 热门讨论 2014-04-26 08:19:57
    上篇博文简单的介绍了一下Chrome插件,今天就与大家分享一下我做的这款有实际意义的插件吧。
  • c++从SQL SERVER中读写数据、删除数据

    万次阅读 2016-10-22 15:56:50
    都是网上一些大神好的,汇总一下,形成一个从原理到应用的完整的流程,对于初学数据库的人有一定的借鉴意义。 一:背景知识: (1)ODBC(Open Database Connectivity)即开放数据库互连,提供一组对数据库访问的...
  • 刚开始涉及到图像处理的时候,在opencv等库中总会看到mask这么一个参数,非常的不理解,在查询一系列资料之后,下它们,以供翻阅。 什么是掩膜(mask) 数字图像处理中的掩膜的概念是借鉴于PCB制版的过程,在...
  •  但是呢,部分朋友比较好奇,为啥要去。他们比较疑惑的是,市面上已经有很多类似的系统了,甚至有部分是开源的且比较优秀的。 因此,我想阐述下,我这些项目的一些初衷。 别人得再好,那都是别人的,按照...
  • 今天在家周末休息,有点时间来整理一点基金申请申请的体会,希望能给刚毕业不久的年轻虫子提供点借鉴作用。 先还是介绍一下简历增加体会的可信度吧。本人07年7月博士毕业留校任教,目前作为主持人已经批准的纵向课题...
  • 【工作】如何好论文

    千次阅读 2019-05-21 11:30:28
    基础研究论文摘要的写作一般要先点题,可阐述某一研究主题提出的背景、意义或影响;然后是对论文框架及主要内容的论述,这部分要留主干去枝叶,提取论文的主要信息;最后是该论文在理论与实践中的借鉴价值。摘要的...
  • 什么是token和使用的意义

    千次阅读 2020-03-03 22:04:34
    二、token的意义 令牌:代表执行某些操作的权利和对象,访问令牌(Assess token)表示访问操作控制主题的系统对象,令牌是一种控制站点的特殊帧,以区别数据帧和其他控制帧 三、token的作用 Token 是在服务端产生的。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,527
精华内容 15,810
关键字:

借鉴意义怎么写