扇出

可重入函数

 ̄綄美尐妖づ 提交于 2020-02-08 22:18:28
一、可重入函数 1)什么是可重入性? 可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。 2)可重入函数: 不为连续的调用持有静态数据。 不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。 如果必须访问全局变量,记住利用互斥信号量来保护全局变量。 绝不调用任何不可重入函数。 3)不可重入函数: 函数中使用了静态变量,无论是全局静态变量还是局部静态变量。 函数返回静态变量。 函数中调用了不可重入函数。 函数体内使用了静态的数据结构; 函数体内调用了malloc()或者free()函数; 函数体内调用了其他标准I/O函数。 函数是singleton中的成员函数而且使用了不使用线程独立存储的成员变量 。 总的来说,如果一个函数在重入条件下使用了未受保护的共享的资源,那么它是不可重入的。 4)示例 在多线程条件下,函数应当是线程安全的,进一步,更强的条件是可重入的。可重入函数保证了在多线程条件下,函数的状态不会出现错误

扇入扇出

二次信任 提交于 2019-12-06 12:34:12
最近在学习有关FPGA方面的知识,在看一些FPGA的datasheet时,看到fan-out和fan-in这样的字眼,乍一看还真不知所云,继续往下看还是云里雾里,于是用Google在线翻译了一下,上面赫然是扇入扇出,不用想,电子设计方面怎么会有这么俗的词,还“扇”呢。刚开始不以为然,后来在求知欲的驱使下,就以扇入扇出为关键字在网上开始艰难搜寻。别说这一找,还真找到不少资料呢,看了网上那些大侠们的解释,我才恍然大悟,原来Google并没有翻译错,而是自己太孤陋寡闻了。下面我将给出我所找到的关于扇入扇出的解释,以下都是来自网络,并非原创: 1.原意: The number of circuits that can be fed input signals from an output device. 扇出,输出可从输出设备输入信号的电路的数量 。 扇出(fan-out)是定义单个逻辑门能够驱动的数字信号输入最大量的术语。大多数TTL逻辑门能够为10个其他数字门或驱动器提供信号。因而,一个典型的TTL逻辑门有10个扇出信号。   在一些数字系统中,必须有一个单一的TTL逻辑门来驱动10个以上的其他门或驱动器。这种情况下,被称为缓冲器的驱动器可以用在TTL逻辑门与它必须驱动的多重驱动器之间。这种类型的缓冲器有25至30个扇出信号。逻辑反向器(也被称为非门)在大多数数字电路中能够辅助这一功能

编程的扇入与扇出

北战南征 提交于 2019-12-06 12:33:57
大家都知道模块化 编程 ,也就是重复代码尽量提炼成函数,自己可以用,别人也可以用,但是提炼出什么样的函数才算好呢?这就要用到扇入与扇出的概念。 模块的扇出是指本模块的直属下层模块的个数。如图: 模块A的扇出为2,模块B的扇出为3,模块C的扇出为1。一个模块的扇出太大或太小都不好,但是宁可太小也不要太大了。一个函数的扇出太大就意味着它调用了很多其他函数,那么其中任何一个函数修改了都会影响到它,如果下层有函数修改了,而它没有做相应的调整,那么肯定出错,导致维护起来很不方便,也就失去了模块化的根本意义方便性,而我们都知道软件的维护成本是很高的。函数的扇出太小意味着本函数基本没有调用其他下层的函数,如果本函数只有两三句也就不提扇入扇出了,既然提了,那么意味着本函数的模块化并没有做好,有些可以提炼成下层函数的语句没有提炼。一般认为,扇出为3到4比较好,但最大不能超过7。如果一个函数扇出太大,解决方法是适当增加中间 函数 ,一级一级调用。 模块的扇入是指有多少个上级模块调用它。扇入越大,说明该模块可以被很多的上级模块调用,说明本模块提炼的非常好,这是我们希望的。但是不能为了获得高扇入而把不相关的东西凑成一个模块,这样的模块内聚程度很低,没有任何意义。 综上所述,我们在设计函数的时候,要设计 高扇入合理扇出 (3到4)的函数。通俗点就是 设计 可以被很多函数调用

什么是扇入和扇出?

做~自己de王妃 提交于 2019-12-06 12:28:35
什么是扇入和扇出? 在软件设计中,扇入和扇出的概念是指应用程序模块之间的层次调用情况。 按照结构化设计方法,一个应用程序是由多个功能相对独立的模块所组成。 扇入:是指直接调用该模块的上级模块的个数。扇入大表示模块的复用程序高。 扇出:是指该模块直接调用的下级模块的个数。扇出大表示模块的复杂度高,需要控制和协调过多的下级模块;但扇出过小(例如总是1)也不好。扇出过 大一般是因为缺乏中间层次,应该适当增加中间层次的模块。扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。 设计良好的软件结构,通常顶层扇出比较大,中间扇出小,底层模块则有大扇入。 其他回答   扇入:一个门的输入定义为门的输入的数目。 扇出:用于描述驱动能力的一个词 更加恰当的说法是:描述负载状况的一种描述方式 来源: CSDN 作者: gz153016 链接: https://blog.csdn.net/gz153016/article/details/50483090

什么是扇入和扇出

妖精的绣舞 提交于 2019-12-06 12:28:15
什么是扇入和扇出? 在软件设计中,扇入和扇出的概念是指应用程序模块之间的层次调用情况。 按照结构化设计方法,一个应用程序是由多个功能相对独立的模块所组成。 扇入:是指直接调用该模块的上级模块的个数。扇入大表示模块的复用程序高。 扇出:是指该模块直接调用的下级模块的个数。扇出大表示模块的复杂度高,需要控制和协调过多的下级模块;但扇出过小(例如总是1)也不好。扇出过 大一般是因为缺乏中间层次,应该适当增加中间层次的模块。扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。 设计良好的软件结构,通常顶层扇出比较大,中间扇出小,底层模块则有大扇入。 其他回答   扇入:一个门的输入定义为门的输入的数目。 扇出:用于描述驱动能力的一个词 更加恰当的说法是:描述负载状况的一种描述方式 来源: CSDN 作者: cuixinminsuijie 链接: https://blog.csdn.net/cuixinminsuijie/article/details/3497442

软件系统设计基本原则

冷暖自知 提交于 2019-11-30 19:26:44
一、抽象 抽象是一种设计技术,说明一个实体的本质,而忽略不重要的方面。抽象将复杂的现象简化到可以分析、理解的程度。软件工程中从软件定义到软件开发要经历多个阶段,每前进一个阶段都可以看作是对软件解法的抽象层次的一次细化。抽象的最底层就是实现该软件的源程序代码。在进行模块化设计时也可以有多个抽象层次,最高抽象层次的模块用概括的方式叙述问题的解法,较低抽象层次的模块是对较高抽象层次模块对问题解法描述的细化。 二、模块化 模块在程序总是数据说明、可执行语句等程序对象的集合,或是单独命名和编址的元素。模块化是指将一个待开发的软件分解成若干个小的简单部分 -- 模块,每个模块可独立开发、测试,最后组装成完整的程序。只是一种分而治之的原则。模块化的目的是使程序的结构清晰,容易阅读、理解、测试和修改。 三、封装 封装是开发程序结构时使用的法则,每个程序的成分封装在一个单一的模块中,在定义每个模块时尽可能少的显露内部的处理。 封装对提高软件的可修改性、可测试性和可移植性有重要的作用。 四、模块独立 模块独立是指每个模块完成一个相对独立的特定子系统,并且与其他模块之间的联系简单。模块独立有两个标准:耦合性和内聚性。 1、耦合是模块之间的相对独立性(相互之间的紧密程度)的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口信息类型等。 耦合按从弱到强的顺序分为以下几种: 非直接耦合

扇入与扇出

梦想的初衷 提交于 2019-11-27 01:27:30
扇入:该模块被调用的次数,扇入大,说明该模块的复用性好。 扇出:该模块调用其他模块的个数,扇出大,说明该模块的业务逻辑复杂。 因此,扇入大是好事,扇出大是坏事。 转载于:https://www.cnblogs.com/nzbbody/archive/2012/08/24/2654166.html 来源: https://blog.csdn.net/weixin_30780649/article/details/99234395