unscalable(求信息产业企业产品标准(电子产品) 范本/模板)_内核_测试_系统

历史故事本文相关内容:unscalable 内核 测试 系统

本文目录

  • 求信息产业企业产品标准(电子产品) 范本/模板
  • 来自智慧的劝诫18
  • 我是新手,请问什么是内核,干嘛用的
  • .NET平台下几种SOCKET模型的简要性能供参考
  • 求以-ble结尾的英文单词
  • ”完整的”用英语怎么说
  • Unity动画状态机中断机制
  • 求以-ble结尾的英文单词 哪个写的越多,给那个分

求信息产业企业产品标准(电子产品) 范本/模板

GB/T 4796—2008《电工电子产品环境条件分类 第1部分:环境参数及其严酷程度》
GB/T 2423.10—2008《电工电子产品环境试验 第2部分: 试验方法 试验Fc: 振动(正弦)》
GB/T 2423.10—1995
1
GB/T 2423.15—2008《电工电子产品环境试验 第2部分: 试验方法 试验Ga和导则: 稳态加速度》
GB/T 2423.15—1995
GB/T 2423.32—2008《电工电子产品环境试验 第2部分:试验方法 试验Ta: 润湿称量法可焊性》
GB/T 2423.32—1985,GB/T 2424.21—1985
GB/T 4798.2—2008《电工电子产品应用环境条件 第2部分: 运输》
序号
标准代号 发布时间 国际标准 分类号(ICS) 英文名称 中文名称 技 术
委员会
TC/SC

1 ISO 80000-7 26 /11/ 2008 01.060. Quantities and units - Part 7: Light 数量和单位---第7部分:光 TC 25

2 ISO/IEC 7816-15-am2 26 /11/ 2008 35.240.15 Amendment 2 - Identification cards -- Integrated circuit cards -- Part 15: Cryptographic information application - Error corrections and extensions for multi-application environments 修改2---识别卡---集成电路卡---第15部分:密码信息应用---多用环境的错误修改和范围 JTC 1/SC 17

3 ISO/IEC 10646-am5 25 /11/ 2008 35.040. Amendment 5 - Information technology -- Universal Multiple-Octet Coded Character Set (UCS) - Tai Tham, Tai Viet, Avestan, Egyptian Hieroglyphs, CJK Unified Ideographs Extension C, and other characters 修改5---信息技术---广用多八位元编码字符集 (UCS)---泰、越、波斯、埃及象形文字、CJK统一象形扩展C及其它字符 JTC 1 /SC 2

4 ISO/IEC 11976 25 /11/ 2008 35.200. Information technology -- Data interchange on 130 mm rewritable and write-once-read-many ultra density optical (UDO) disk cartridges -- Capacity: 60 Gbytes per cartridge -- Second generation 信息技术-- 130mm可重写和一次写多次读的超密度光盘(UDO)盒带的数据交换---容量:每盒60G字节---.第二代 JTC 1

5 ISO/IEC 14165-122 28 /11/ 2008 35.200. Information technology - Fibre channel - Part 122: Arbitrated loop-2 (FC-AL-2) 信息技术—光纤信道---第122部分:仲裁环路-2 (FC-AL-2) JTC 1/SC 25

6 ISO/IEC 14496-3-am2 Corr.3 28 /11/ 2008 35.040. Corrigendum 3 - Amendment 2 - Information technology - Coding of audio-visual objects - Part 3: Audio - Audio Lossless Coding (ALS), new audio profiles and BSAC extensions 勘误表3---修改2---信息技术---视听对象编码---第3部分:音视频无损失码(ALS)、新音频剖面和BSAC扩展

7 ISO/IEC 14496-3-am2 Corr.2 28 /11/ 2008 35.040. Corrigendum 2 - Amendment 2 - Information technology - Coding of audio-visual objects - Part 3: Audio - Audio Lossless Coding (ALS), new audio profiles and BSAC extensions 勘误表2---信息技术---视听对象编码---第3部分:音视频无损失码(ALS)、新音频剖面和BSAC扩展

8 ISO/IEC 14496-3-am3 Corr.1 28 /11/ 2008 35.200. Corrigendum 1 - Amendment 3 - Information technology - Coding of audio-visual objects - Part 3: Audio - Scalable Lossless Coding (SLS) 勘误表1--修改3---信息技术---视听对象编码---第3部分:音频---可升级无损失码(ALS)

9 ISO/IEC 14496-11 Corr.5 28 /11/ 2008 35.200. Corrigendum 5 - Information technology -- Coding of audio-visual objects -- Part 11: Scene description and application engine - 勘误表5---信息技术---视听对象编码---第11部分:场景描述和应用引擎

10 ISO/IEC 15504-7 25 /11/ 2008 35.080 Information technology -- Process assessment -- Part 7: Assessment of organizational maturity 信息技术---过程评定---第7部分:组织完备性评定 JTC 1

11 ISO/IEC 15938-12 25 /11/ 2008 35.040. Information technology -- Multimedia content description interface -- Part 12: Query format 信息技术---过程评定---第7部分:多媒体内容描述界面---第12部分:询问格式 JTC 1/ SC 29

12 ISO/IEC 18047-6 26 /11/ 2008 35.040. Information technology -- Radio frequency identification device conformance test methods -- Part 6: Test methods for air interface communications at 860 MHz to 960 MHz 信息技术---无线电频率鉴定设备符合性试验方法---第6部分:860 MHz~ 960 MHz下空气界面通信试验方法 JTC 1

13 ISO/IEC 21000-7-am1 25 /11/ 2008 35.040. Amendment 1 - Information technology -- Multimedia framework (MPEG-21) -- Part 7: Digital Item Adaptation - Query format capabilities 修改1---信息技术---多媒体框架(MPEG-21) ---第7部分:数字项目适配性---询问格式容量 JTC 1/SC 29

14 ISO/IEC 23000-8 24 /11/ 2008 35.040. Information technology -- Multimedia application format (MPEG-A) -- Part 8: Portable video application format 信息技术---多媒体应用格式(MPEG-A) ---第8部分:轻便电视应用格式 JTC 1/SC 29

15 ISO/IEC 25434 25 /11/ 2008 35.220.30 Information technology -- Data interchange on 120 mm and 80 mm optical disk using +R DL format -- Capacity: 8,55 Gbytes and 2,66 Gbytes per side (recording speed up to 16X) 信息技术--- 使用+R DL格式的120mm和80mm光盘的数字交换---容量为每面8,55 G字节和 2,66 G字节(记录速度至16X) JTC 1

16 IECEE 01
26 /11/ 2008 -- IEC System of Conformity Assessment Schemes for ElectrotechnicalEquipment and Components (IECEE) - Basic Rules FREE DOWNLOAD 电机设备和元器件IEC符合性评定方案系统(IECEE)---基本规则(免费下载) ---

17 IEC 60079-0 Corr.I1 28 /11/ 2008 29.260.20 Interpretation sheet 1 - Electrical apparatus for explosive gas atmospheres - Part 0: General requirements 解释篇1---爆炸性空气中使用的电气设备---第0部分:总要求

18 IEC 60204-1-am1 28 /11/ 2008 29.020. Amendment 1 - Safety of machinery - Electrical equipment of machines - Part 1: General requirements 修改1---机械安全性---机械电气设备---第1部分:总要求 TC 44

19 IEC 60297-3-100 26 /11/ 2008 31.240. Mechanical structures for electronic equipment - Dimensions of mechanical structures of the 482,6 mm (19 in) series - Part 3-100: Basic dimensions of front panels, subracks, chassis, racks and cabinets 电子设备用机械结构---482,6 mm (19 in)系列机械结构尺寸---第3-100部分:面板、子架、底盘、架子和柜子的基准尺寸 SC 48D

20 IEC 60297-3-105 26 /11/ 2008 31.240. Mechanical structures for electronic equipment - Dimensions of mechanical structures of the 482,6 mm (19 in) series - Part 3-105: Dimensions and design aspects for 1U high chassis 电子设备用机械结构---482,6 mm (19 in)系列机械结构尺寸---第3-105部分:底盘1U高的尺寸和设计间距 SC 48D

21 IEC 60384-1 Corr.1 26 /11/ 2008 31.060. Corrigendum 1 - Fixed capacitors for use in electronic equipment - Part 1: Generic specification 勘误表1---电子设备用固定电容器---第1部分:一般要求

22 IEC/PAS 60539-1-1 26 /11/ 2008 31.040.30 Directly heated negative temperature coefficient thermistors - Part 1-1: Blank detail specification - Sensing application - Assessment level EZ 直接加热负温度系数---第1-1部分:空白详细规范---敏感性应用---评定水平EZ TC 40

23 IEC 60689 28 /11/ 2008 31.140. Measurement and test methods for tuning fork quartz crystal units in the range from 10 kHz to 200 kHz and standard values TC 49

24 IEC 60730-2-5-am2 26 /11/ 2008 97.120. Amendment 2 - Automatic electrical controls for household and similar use - Part 2-5: Particular requirements for automatic electrical burner control systems TC 72

25 IEC/TRF 60730-2-9 21 /11/ 2008 97.120. This Test Report Form applies to IEC 60730-2-9:2000 + A1:2002 + A2: 2004 TC 72

26 IEC/TRF 60730-2-14 28 /11/ 2008 97.120. This Test Report Form applies to IEC 60730-2-14:1995 (First Edition) + A1:2001 + A2:2007 TC 72

27 IEC 60904-7 26 /11/ 2008 27.160. Photovoltaic devices - Part 7: Computation of the spectral mismatch correction for measurements of photovoltaic devices TC 82

28 IEC 61000-1-2 28 /11/ 2008 33.100.99 Electromagnetic compatibility (EMC) - Part 1-2: General - Methodology for the achievement of functional safety of electrical and electronic systems including equipment with regard to electromagnetic phenomena TC 77

29 IEC 61000-4-17-am2 28 /11/ 2008 33.100.20 Amendment 2 - Electromagnetic compatibility (EMC) - Part 4-17: Testing and measurement techniques - Ripple on d.c. input power port immunity test TC 77

30 IEC 61249-2-35 28 /11/ 2008 31.180. Materials for printed boards and other interconnecting structures - Part 2-35: Reinforced base materials, clad and unclad - Modified epoxide woven E-glass laminate sheets of defined flammability (vertical burning test), copper-clad for lead-free assembly TC 91

31 IEC 61249-2-36 28 /11/ 2008 31.180. Materials for printed boards and other interconnecting structures - Part 2-36: Reinforced base materials, clad and unclad - Epoxide woven E-glass laminate sheets of defined flammability (vertical burning test), copper-clad for lead-free assembly TC 91

32 IEC 61249-2-37 28 /11/ 2008 31.180. Materials for printed boards and other interconnecting structures - Part 2-37: Reinforced base materials, clad and unclad - Modified non-halogenated epoxide woven E-glass laminate sheets of defined flammability (vertical burning test), copper-clad for lead-free assembly TC 91

33 IEC 61249-2-38 28 /11/ 2008 31.180. Materials for printed boards and other interconnecting structures - Part 2-38: Reinforced base materials, clad and unclad - Non-halogenated epoxide woven E-glass laminate sheets of defined flammability (vertical burning test), copper-clad for lead-free assembly TC 91

34 IEC 61347-2-10-am1 26 /11/ 2008 29.140.99 Amendment 1 - Lamp controlgear - Part 2-10: Particular requirements for electronic invertors and convertors for high-frequency operation of cold start tubular discharge lamps (neon tubes) SC 34C

35 IEC 61676-am1 28 /11/ 2008 11.040.50
11.040.55 Amendment 1 - Medical electrical equipment - Dosimetric instruments used for non-invasive measurement of X-ray tube voltage in diagnostic radiology

36 IEC 61883-8 26 /11/ 2008 33.160.40 Consumer audio/video equipment - Digital interface - Part 8: Transmission of ITU-R BT.601 style digital video data
TC 100

37 IEC 62137-1-3 28 /11/ 2008 31.190. Surface mounting technology - Environmental and endurance test methods for surface mount solder joint - Part 1-3: Cyclic drop test TC 91

38 IEC 62271-109 26 /11/ 2008 29.130.10 High-voltage switchgear and controlgear - Part 109: Alternating-current series capacitor by-pass switches SC 17A

39 IEC 62271-SER 26 /11/ 2008 29.130.10;
29.130.99 High-voltage switchgear and controlgear - ALL PARTS SC 17A

来自智慧的劝诫18

【箴 18:1】 与众寡合的,独自寻求心愿,并恼恨一切真智慧。

【Pro 18:1】 An unfriendly man pursues selfish ends; he defies all sound judgment.

【箴 18:2】 愚昧人不喜爱明哲,只喜爱显露心意。

【Pro 18:2】 A fool finds no pleasure in understanding but delights in airing his own opinions.

【箴 18:3】 恶人来,藐视随来;羞耻到,辱骂同到。

【Pro 18:3】 When wickedness comes, so does contempt, and with shame comes disgrace.

【箴 18:4】 人口中的言语如同深水,智慧的泉源好像涌流的河水。

【Pro 18:4】 The words of a man’s mouth are deep waters, but the fountain of wisdom is a bubbling brook.

【箴 18:5】 瞻徇恶人的情面,偏断义人的案件,都为不善。

【Pro 18:5】 It is not good to be partial to the wicked or to deprive the innocent of justice.

【箴 18:6】 愚昧人张嘴启争端,开口招鞭打。

【Pro 18:6】 A fool’s lips bring him strife, and his mouth invites a beating.

【箴 18:7】 愚昧人的口自取败坏,他的嘴是他生命的网罗。

【Pro 18:7】 A fool’s mouth is his undoing, and his lips are a snare to his soul.

【箴 18:8】 传舌人的言语,如同美食深入人的心腹。

【Pro 18:8】 The words of a gossip are like choice morsels; they go down to a man’s inmost parts.

【箴 18:9】 作工懈怠的,与浪费人为弟兄。

【Pro 18:9】 One who is slack in his work is brother to one who destroys.

【箴 18:10】 耶和华的名是坚固台,义人奔入,便得安稳。

【Pro 18:10】 The name of the LORD is a strong tower; the righteous run to it and are safe.

【箴 18:11】 富足人的财物是他的坚城,在他心想,犹如高墙。

【Pro 18:11】 The wealth of the rich is their fortified city; they imagine it an unscalable wall.

【箴 18:12】 败坏之先,人心骄傲;尊荣以前,必有谦卑。

【Pro 18:12】 Before his downfall a man’s heart is proud, but humility comes before honor.

【箴 18:13】 未曾听完先回答的,便是他的愚昧和羞辱。

【Pro 18:13】 He who answers before listening--that is his folly and his shame.

【箴 18:14】 人有疾病,心能忍耐,心灵忧伤,谁能承当呢?

【Pro 18:14】 A man’s spirit sustains him in sickness, but a crushed spirit who can bear?

【箴 18:15】 聪明人的心得知识,智慧人的耳求知识,

【Pro 18:15】 The heart of the discerning acquires knowledge; the ears of the wise seek it out.

【箴 18:16】 人的礼物为他开路,引他到高位的人面前。

【Pro 18:16】 A gift opens the way for the giver and ushers him into the presence of the great.

【箴 18:17】 先诉情由的,似乎有理,但邻舍来到,就察出实情。

【Pro 18:17】 The first to present his case seems right, till another comes forward and questions him.

【箴 18:18】 掣签能止息争竞,也能解散强胜的人。

【Pro 18:18】 Casting the lot settles disputes and keeps strong opponents apart.

【箴 18:19】 弟兄结怨,劝他和好,比取坚固城还难,这样的争竞,如同坚寨的门闩。

【Pro 18:19】 An offended brother is more unyielding than a fortified city, and disputes are like the barred gates of a citadel.

【箴 18:20】 人口中所结的果子,必充满肚腹;他嘴所出的,必使他饱足。

【Pro 18:20】 From the fruit of his mouth a man’s stomach is filled; with the harvest from his lips he is satisfied.

【箴 18:22】 得着贤妻的,是得着好处,也是蒙了耶和华的恩惠。

【Pro 18:22】 He who finds a wife finds what is good and receives favor from the LORD.

【箴 18:23】 贫穷人说哀求的话,富足人用威吓的话回答。

【Pro 18:23】 A poor man pleads for mercy, but a rich man answers harshly.

【箴 18:24】 滥交朋友的,自取败坏,但有一朋友,比弟兄更亲密。

【Pro 18:24】 A man of many companions may come to ruin, but there is a friend who sticks closer than a brother.

我是新手,请问什么是内核,干嘛用的

  内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。
  严格地说,内核并不是计算机系统中必要的组成部分。程序可以直接地被调入计算机中执行,这样的设计说明了设计者不希望提供任何硬件抽象和操作系统的支持,它常见于早期计算机系统的设计中。最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器核心当中,或者固化在只读存储器里。这些变化发生时,操作系统内核的概念就渐渐明晰起来了。
  一个更重要的问题是,什么人才要了解内核。或者说,对内核的了解程度,会怎样影响一个人的工作,毕竟,它是复杂的。
  内核分类
  单内核 它为潜在的硬件提供了大量完善的硬件抽象操作。
  微内核 只提供了很小一部分的硬件抽象,大部分功能由一种特殊的用户态程序:服务器来完成。
  混合内核 它很像微内核结构,只不过它的的组件更多的在核心态中运行,以获得更快的执行速度。
  外内核 这种内核不提供任何硬件抽象操作,但是允许为内核增加额外的运行库,通过这些运行库应用程序可以直接地或者接近直接地对硬件进行操作。
  单内核
  单内核结构在硬件之上定义了一个高阶的抽象界面,应用一组原语(或者叫系统调用)来实现操作系统的功能,例如进程管理,文件系统,和存储管理等等,这些功能由多个运行在核心态的模块来完成。
  尽管每一个模块都是单独地服务这些操作,内核代码是高度集成的,而且难以编写正确。因为所有的模块都在同一个内核空间上运行,一个很小的bug都会使整个系统崩溃。然而,如果开发顺利,单内核结构就可以从运行效率上得到好处。
  很多现代的单内核结构内核,如Linux和FreeBSD内核,能够在运行时将模块调入执行,这就可以使扩充内核的功能变得更简单,也可以使内核的核心部分变得更简洁。
  单内核结构的例子:
  1.传统的UNIX内核,例如伯克利大学发行的版本
  2.Linux内核
  微内核
  微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成,这些原语仅仅包括了建立一个系统必需的几个部分,如 线程管理,地址空间和进程间通信等。
  微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最核心的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分
  微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务.微内核结构必然是多线程的,第一代微内核,在核心提供了较多的服务,因此被称为’胖微内核’,它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的核心,可以说,蒸蒸日上.第二代为微内核只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS.
  微内核的例子:
  1.AIX
  2.BeOS
  3.L4微内核系列
  4.Mach, 用于GNU Hurd和Mac OS X
  5.Minix
  6.MorphOS
  7.QNX
  8.RadiOS
  9.VSTa
  单内核与微内核的比较
  单内核结构是非常有吸引力的一种设计,由于在同一个地址空间上实现所有低级操作的系统控制代码的复杂性的效率会比在不同地址空间上实现更高些。
  20世纪90年代初,单内核结构被认为是过时的。把Linux设计成为单内核结构而不是微内核引起了无数的争议。
  现在,单核结构正趋向于容易被正确设计,所以它的发展会比微内核结构更迅速些。两个阵营中都有成功的案例。微核经常被用于机器人和医疗器械的嵌入式设计中,因为它的系统的关键部分都处在相互分开的,被保护的存储空间中。这对于单核设计来说是不可能的,就算它采用了运行时加载模块的方式。
  尽管Mach是众所周知的多用途的微内核,人们还是开发了除此之外的几个微内核。L3是一个演示性的内核,只是为了证明微内核设计并不总是低运行速度。它的后续版本L4甚至可以将Linux内核在单独的地址空间作为它的一个进程来运行。
  QNX是一个从20世纪80年代就开始设计的微内核系统。它比Mach更接近微内核的理念。它被用于一些特殊的领域,在这些情况下由于软件错误导致系统失效是不允许的。例如航天飞机上的机械手,还有研磨望远镜镜片的机器,一点点失误就会导致上千美元的损失。
  很多人相信,由于Mach不能够解决一些提出微内核理论时针对的问题,所以微内核技术毫无用处。Mach的爱好者表明这是非常狭隘的观点,遗憾的是似乎所有人都开始接受这种观点。
  混合内核
  混合内核实质上是微内核,只不过它让一些微核结构运行在用户空间的代码运行在内核空间,这样让内核的运行效率更高些。这是一种妥协做法,设计者参考了微内核结构的系统运行速度不佳的理论。然而后来的实验证明,纯微内核的系统实际上也可以是高效率的。大多数现代操作系统遵循这种设计范畴,微软视窗就是一个很好的例子。另外还有XNU,运行在苹果Mac OS X上的内核,也是一个混合内核。
  混合内核的例子:
  BeOS 内核
  DragonFly BSD
  ReactOS 内核
  Windows NT、Windows 2000、Windows XP、Windows Server 2003以及Windows Vista等基于NT技术的操作系统
  XNU
  一些人认为可以在运行时加载模块的单核系统和混合内核系统没有区别。这是不正确的。混合意味着它从单核和微核系统中都吸取了一定的设计模式,例如一些非关键的代码在用户空间运行,另一些在内核空间运行,单纯是为了效率的原因。
  外内核
  外内核系统,也被称为纵向结构操作系统,使一种比较极端的设计方法。
  它的设计理念是让用户程序的设计者来决定硬件接口的设计。外内核本身非常的小,它通常只负责系统保护和系统资源复用相关的服务。
  传统的内核设计(包括单核和微核)都对硬件作了抽象,把硬件资源或设备驱动程序都隐藏在硬件抽象层下。比方说,在这些系统中,如果分配一段物理存储,应用程序并不知道它的实际位置。
  而外核的目标就是让应用程序直接请求一块特定的物理空间,一块特定的磁盘块等等。系统本身只保证被请求的资源当前是空闲的,应用程序就允许直接存取它。既然外核系统只提供了比较低级的硬件操作,而没有像其他系统一样提供高级的硬件抽象,那么就需要增加额外的运行库支持。这些运行库运行在外核之上,给用户程序提供了完整的功能。
  理论上,这种设计可以让各种操作系统运行在一个外核之上,如Windows和Unix。并且设计人员可以根据运行效率调整系统的各部分功能。
  现在,外核设计还停留在研究阶段,没有任何一个商业系统采用了这种设计。几种概念上的操作系统正在被开发,如剑桥大学的Nemesis,格拉斯哥大学的Citrix系统和瑞士计算机科学院的一套系统。麻省理工学院也在进行着这类研究。
  无核
  TUNES Project和UnununiumOS都进行无内核的尝试. 无内核的系统is not limited to a single centralizing entry point.
  参考
  操作系统
  内核发展中的改进
  红旗5就是2.6内核了,期待中
  转:期待已久的2.6内核终于到来了。IBMLinuxTechnologyCenter的PaulLarson暗中关注那些让2.6成为有史以来最好内核的工具、测试和技术——从修正控制和回归测试到缺陷追踪和列表保持。
  经过为期三年的积极开发,新2.6Linux内核最近已经发布了,在这期间,Linux内核的开发和测试方法发生了一些有趣的变化。当前,开发内核的方法在很多方面与三年前没什么不同。不过,一些关键变化已经使整体的稳定性和质量得到了提高。
  源代码管理
  历史上,从来没有出现过用于Linux内核的正式的源代码管理或修正控制系统。实际上,很多开发者实现了他们自己的修正控制器,但是并没有官方的LinuxCVS档案库,让LinusTorvalds检查加入代码,并让其他人可以由此获得代码。修正控制器的缺乏,常常会使发行版本之间存在“代沟”,没有人真正知道加入了哪些改变,这些改变是否能很好地融合,或者在即将发行的版本中哪些新内容是值得期待的。通常,如果更多的开发者可以像了解他们自己所做的改变一样了解到那些变化,某些问题就可以得到避免。
  由于缺乏正式的修正控制器和源代码管理工具,使得很多人提议使用一个名为BitKeeper的产品。BitKeeper是一个源代码控制管理系统,很多内核开发者已经成功地将其应用于他们自己的内核开发工作中。最初的2.5内核发布后不久,LinusTorvalds开始试用BitKeeper,以确定它是否能满足他的需要。现在,主要的2.4和2.5内核的Linux内核源代码都是用BitKeeper来管理的。对大部分可能很少或者根本不关心内核开发的用户来说,这一点看起来可能无关紧要。不过,在一些情况下,用户可以受益于那些由于使用BitKeeper而带来的开发Linux内核的方法的改变。
  使用BitKeeper的最大好处之一是补丁的融合。当多个补丁应用于同一基础的代码之上,并且其中一些补丁会对同一部分产生影响时,就可能会出现融合问题。一个好的源代码管理系统可以自动地完成其中一些更为复杂的部分工作,这样可以更快地融合补丁,并使更多的补丁加入到内核中。随着Linux内核开发者社区的扩大,非常需要修正控制器来帮助保持对所有改变的追踪。由于每个人都可以将这些改变集成到主要的Linux内核中,为保证补丁不会被遗忘并可以方便地融合和管理,BitKeeper等工具是必不可少的。
  非常有必要使用一个实时的、集中的档案库来保存对Linux内核的最新更新。每一个被内核接受的改变或者补丁都被作为一个改变集被追踪。终端用户和开发者可以保存他们自己的源文件档案库,并根据需要可以通过一个简单的命令用最新的改变集进行更新。对开发者来说,这意味着可以始终使用最新的代码拷贝。测试人员可以使用这些逻辑的改变集合来确定哪些变化导致了问题的产生,缩短调试所需要的时间。甚至那些希望使用最新内核的用户也可以直接利用实时的、集中的档案库,因为现在一旦他们所需要的部件或缺陷修复加入到内核中,他们就可以马上进行更新。当代码融合到内核时,任何用户都可以提供关于这些代码的即时反馈和缺陷报告。
  并行开发
  随着Linux内核的成长,变得更加复杂,而且吸引更多开发者将注意力集中到内核的特定方面的专门开发上来,出现了另一个开发Linux方法的有趣改变。在2.3内核版本的开发期间,除了由LinusTorvalds发行的主要的一个内核树之外,还有一些其他的内核树。
  在2.5的开发期间,内核树出现了爆炸式的增长。由于使用源代码管理工具可以保持开发的同步并行进行,这样就可能实现开发的部分并行化。为了让其他人在他们所做的改变被接受之前可以进行测试,有一些开发需要并行化。那些保持自己的树的内核维护者致力于特定的组件和目标,比如内存管理、NUMA部件、改进扩展性和用于特定体系结构的代码,还有一些树收集并追踪对许多小缺陷的纠正。
  图1.Linux2.5开发树
  这种并行开发模型的优点是,它使得需要进行重大改变的开发者,或者针对一个特定的目标进行大量类似改变的那些开发者可以自由地在一个受控环境中开发,而并不影响其他人所用内核的稳定性。当开发者完成工作后,他们可以发布针对Linux内核当前版本的补丁,以实现到此为止他们所完成的改变。这样,社区中的测试人员就可以方便地测试这些改变并提供反馈。当每一部分都被证明是稳定的之后,那些部分可以单独地,或者甚至同时全部地,融合到主要Linux内核中。
  在实际应用中测试
  过去,Linux内核测试方法围绕开放源代码开发模型进行。由于代码一经发布后就公开给其他开发者进行审查,因此从来没有出现过一个与其他形式的软件开发类似的正式的验证周期。这种方法背后的理论依据是“TheCathedralandtheBazaar”中所谓的“Linus法则”(请查阅参考资料以获得相关的参考),这一法则的内容为“众人的眼光是雪亮的”。换句话说,高力度的审查可以找出大部分真正的大问题。
  然而实际上,内核有很多复杂的相互联系。即使进行了足够力度的审查,还是会漏过很多严重的缺陷。此外,最新的内核一经发布,终端用户可以(也经常是)下载并使用。2.4.0发布时,社区中很多人都提议进行更有组织的测试,以保证特定测试和代码审查的强度。有组织的测试包括运用测试计划、测试过程中的可重复性等等。使用所有的三种方法比最初只使用两种方法会带来更高的代码质量。
  Linux测试项目
  最早对Linux开始进行有组织测试的贡献者是Linux测试项目(LinuxTestProject,LTP)。这个项目的目的是通过更有组织的测试方法提高Linux的质量。这个测试项目的一部分是自动测试套件的开发。LTP开发的主要测试套件也叫做Linux测试项目。2.4.0内核发布时,LTP测试套件只有大约100个测试。随着2.4和2.5版本Linux的发展与成熟,LTP测试套件也正在发展和成熟。当前,Linux测试项目包括超过2000个测试,而且这个数字还在增长!
  代码覆盖分析
  现在所使用的新工具为内核提供了代码覆盖分析的功能。覆盖分析告诉我们,在一个给定的测试运行时,内核中哪些行代码被执行。更重要的是,覆盖分析提示了内核的哪些部分还根本没有被测试到。这个数据是重要的,因为它指出了需要再编写哪些新测试来测试内核的那些部分,以使内核可以得到更完备的测试。
  持续多日的内核回归测试
  在2.5的开发周期中,Linux测试项目所采用的另一个项目是,用LTP测试套件对Linux内核执行持续多日的回归测试。人们用BitKeeper创建了一个实时的、集中的档案库,以随时可以获得Linux内核的快照。在没有使用BitKeeper和快照时,测试人员不得不等到内核发布后才可以开始测试。现在,内核只要发生了改变,测试人员就可以进行测试。
  使用自动化工具来执行持续多日的回归测试的另一个优点是,和上一次测试相比变化较小。如果发现了一个新的回归缺陷,通常会容易地检测出这个缺陷可能是哪个改变导致的。
  同样,由于是最新的改变,因此它在开发者的脑海中印象还比较深——希望这能让他们更容易地记起并修订相应的代码。或许Linus法则应该有这样一个结论,有一些缺陷比其他缺陷更容易被发现,因为那些正是持续多日的内核回归测试所发现并处理的那些。在开发周期中和实际发布之前能够每天进行这些测试,这就使那些只关注完整发行版本的测试者可以将精力集中于更严重和耗时的缺陷。
  可扩展测试平台
  另外一个名为开放源代码开发实验室(OpenSourceDevelopmentLabs,OSDL)的团队也为Linux测试做出了重要的贡献。2.4内核发布后不久,OSDL创建了一个叫做可扩展测试平台(ScalableTestPlatform,STP)的系统。STP是一个自动化的测试平台,让开发者和测试者可以运行OSDL硬件之上的系统所提供的测试。开发者甚至可以使用这个系统来测试他们自己的针对内核的补丁。可扩展测试平台简化了测试的步骤,因为STP可以构建内核、设置测试、运行测试,并收集结果。然后得到结果以进行深入地比较。很多人无法接触大型系统,比如具有8个处理器的SMP机器,而通过STP,任何人都可以在像这样的大型系统上运行测试,这个系统(STP)的另一个好处就在于此。
  追踪缺陷
  自从2.4发布以来,对Linux内核的有组织测试最大的改进之一是缺陷追踪。过去,在Linux内核中发现的缺陷会报告给Linux内核邮件列表,报告给特定组件或者特定体系的邮件列表,或者直接报告给维护发现缺陷的那部分代码的个人。随着开发和测试Linux的人数的增加,这个系统的不足之处很快就暴露了出来。在以前,除非人们对缺陷的报告可以惊人地维持下去,缺陷经常被遗漏、遗忘或者忽略。
  现在,OSDL安装了一个缺陷追踪系统(请参阅参考资料中的链接),来报告和追踪Linux内核的缺陷。系统经过了配置,这样当某个组件的缺陷被报告时,那个组件的维护者就会得到通知。维护者既可以接受并修复那个缺陷,或重新指定缺陷(如果最终确定实际上那是内核另外一部分的缺陷),也可以排除它(如果最终确定并不是真正的缺陷,比如错误配置的系统)。报告给邮件列表的缺陷还有丢失的危险,因为越来越多的电子邮件涌向那个列表。然而,在缺陷追踪系统中,始终有对每一个缺陷及其当前状态的记录。
  大量信息
  在为将来的2.6Linux内核进行开的过程中,除了这些自动化的信息管理方法之外,开放源代码社区的不同成员还收集和追踪了数量惊人的信息。
  例如,在KernelNewbies站点上创建了一个状态列表,来保持对已经提出的内核新部件的追踪。这个列表包含了以状态排序的条目,如果它们已经完成了,则说明它们已经包含在哪个内核中,如果还没有完成,则指出还需要多长时间。列表上很多条目的链接指向大型项目的Web站点,或者当条目较小时,链接指向一个解释相应部件的电子邮件信息的拷贝。
  内核版本历史
  到现在我们很多人已经熟悉了Linux内核的版本编号系统,不过AndriesBrouwer提醒了我们实际上它是如何不规则的。
  Linux的第一个公开版本是1991年10月的0.02版本。两个月以后,在1991年12月,Linus发布了0.11版本,这是第一个可以不依赖于Minix就可以使用的独立内核。
  0.12版本发布一个月以后,在3月,版本号跳到了0.95,反映出系统正变得成熟。不仅如此,直到两年后,也就是1994年3月,具有里程碑意义的1.0.0才完成。
  大约从这时起开始使用两“路”编号方法标注内核的开发。偶数号的内核(比如1.0、2.2、2.4,现在是2.6)是稳定的,“产品”型号。同时,奇数号的内核版本(1.1、2.3)是前沿的或者“发展中的”内核。直接最近,一个稳定的内核发布以后几个月就开始新内核的开发工作。然而,2.5的开发工作是在2.4完成后几ten个月以后才开始的。
  那么我们什么时候可以期待2.7呢?这不好说,不过在KernelTrap已经有了一个讨论的头绪。
  在那之前,您可以阅读RagibHasan的文章以深入了解Linux的历史。
  同时,“post-halloween文档”告诉用户即将到来的2.6内核有哪些可期待的东西(参阅参考资料中的链接)。post-halloween文档的大部分讨论内容是用户需要注意的主要改变,以及需要更新的系统工具(为了利用它们)。关心这一信息人的主要是那些期望提前了解2.6内核中有哪些内容的Linux发行商,还有终端用户,这可以让他们确定为了能利用新部件是否有需要升级的程序。
  KernelJanitors项目保持了(实际上现在还在保持)一个列表,内容是需要修复的较小缺陷和解决方法。这些缺陷解决方法中大部分是由于向内核打较大的补丁时需要改动很多部分代码而导致的,比如有些地方会影响设备驱动程序。那些新近从事内核开发的人开始时的工作可以选择列表中的条目,这样让他们可以通过小项目学习如何编写内核代码,同时有机会为社区做出贡献。
  还有,在另一个预发布的项目中,JohnCherry追踪了在对每个已经发布的内核版本进行编译时发现的错误和警告。这些编译统计数字随着时间的流逝一直持续下降,而且,以系统的形式来发布这些结果使得所取得的进展一目了然。在很多情况下,可以像使用KernelJanitors列表一样来利用这些警告和错误消息中的一部分,因为编译错误通常是由小的缺陷引起的,需要一些努力去修复。
  最后,还有AndrewMorton的“must-fix”列表。由于他已经被选定为2.6内核发布后的维护者,他运用他的特权概括地列出了那些他认为在最终的2.6内核发布前最迫切需要解决方案的问题。must-fix列表中包含了内核Bugzilla系统中的缺陷,需要完成的部件,以及其他已知的问题,这些问题如不解决将阻碍2.6发布。这一信息可以帮助指明在新内核发布前还需要哪些步骤;对那些关心这一万众期待的2.6内核发布何时能完成的人来说,它还可以提供有价值的信息。
  自从去年年底2.6内核发布以后,这些资料中有一些已经明显不再进行维护了。其他的相关工作在主要版本发布后仍未结束,还要继续进行后期的更新。有趣的是能看到哪些又被重新提起,有了哪些革新,我们又一次接近了一个主要发布版本。
  结束语
  多数人在考虑内核的一个新的稳定版本时,第一个问题通常是“这一版本中有什么新东西吗?”实际上除了一些新特性和修复之外,在幕后还有一个随着时间而不断改进的过程。
  在Linux社区中,开放源代码开发日益兴旺。致力于Linux内核和其他方面工作的编码者之间联系是松散的,这就使得团队可以成功地适应变化。在许多方面,相对于已经完成的很多单个的改进和缺陷修复而言,Linux的开发和测试方法——尤其是这些方法随时间的推移得到了改进——对新内核的可靠性影响更为深远。
  天文学意义上的内核
  从天文学意义上讲,一颗行星(或一颗恒星)都有两个核:内核和外核,星体内核的温度可高达几千摄氏度。

.NET平台下几种SOCKET模型的简要性能供参考

1.Socket + Threads/ThreadPool大概性能:小于1500个连接 实现:Accept一个Socket,就交给一个线程去管理,比较笨,但也比较有效,因为是同步方式,控制起来很方便。高级点的,就是交给一个线程池去管理,线程池由系统自动托管,省去了开销线程的时间。一般小型项目,用这个完全足够,开发也简单。但要注意,如果若干Socket长时间占用线程池中的线程,同时其它连接数又比较多,很容易出现提示说你没有足够的线程供使用。呵呵,让Socket少做点事,少占用时间,换一个快点的CPU是不错的方式。另外,如果有一些比较好的第三方线程池组件,也可以选择使用,比如SmartThreadPool。2.Socket + Select大概性能:大于1500个连接后性能下降 实现:Select是很常用的一种模型。是在阻塞功能中轮询一个或多个Socket,将要处理的Socket放到一个IList中,当Select轮询结束后,然后我们再自己处理这个IList中的Socket。具体的用法可以看一下MSDN。Select的效率并不能说是高的,因为当队列中待处理的Socket比较多的时候,处理最后几个Socket相当于要遍历所有前面的Socket,非常不划算的.3.Socket + Asynchronous大概性能:约7500个客户端连接 实现:BeginXXXX,EndXXXX,再熟悉不过了吧。异步Socket归根到底,还是用的线程池技术,用线程池来处理异步IO。这就又引出个问题,.NET的线程池又是用的什么实现方式,以前看过有人说,.NET的线程池是用的完成端口来实现的,我不知道这样的说法是不是正确,从查到的资料中也没有办法确认(希望这点有朋友可以告诉我)。异步Socket对于程序的处理流程来说比同步复杂了许多,异步回调函数的控制不如同步方式那样直观。但有一点我想应该是要注意的,就是回调函数应该轻装上阵,不应该处理过多的事务,对传递数据的处理,应该交给其它线程进行处理。 4.IOCP(完成端口)大概性能:约20000~50000个客户端连接 实现:现在.NET下有一些伪IOCP,大家可以去搜索一下,还没有见过开放出来的用这些伪IOCP来实现的SOCKET例子。我说的20000~50000个客户端连接,是指在C++下开发的情况,这样的情况下,需要用到的基本技术还包括内存池、查询算法等。伪IOCP能实现多少最大连接,没有资料可以查,如果有朋友知道,可以讨论一下。另外上 面提到的许多数据,是从一些资料上摘抄下来的,我没有自己试过,仅仅是拿出来和大家讨论一下。1. Introduction - Native Win32 IOCPI/O Completion Ports (IOCP) supported on Microsoft Windows platforms has two facets. It first allows I/O handles like file handles, socket handles, etc., to be associated with a completion port. Any async I/O completion event related to the I/O handle associated with the IOCP will get queued onto this completion port. This allows threads to wait on the IOCP for any completion events. The second facet is that we can create a I/O completion port that is not associated with any I/O handle. In this case, the IOCP is purely used as a mechanism for efficiently providing a thread-safe waitable queue technique. This technique is interesting and efficient. Using this technique, a pool of a few threads can achieve good scalability and performance for an application. Here is a small example. For instance, if you are implementing a HTTP server application, then you need to do the following mundane tasks apart from the protocol implementation:Create a client connection listen socket. Once we get the client connection, use the client socket to communicate with the client to and fro. You can implement it by creating one dedicated thread per client connection that can continuously communicate with the client to and fro. But this technique quickly becomes a tremendous overhead on the system, and will reduce the performance of the system as the number of simultaneous active client connections increase. This is because, threads are costly resources, and thread switching is the major performance bottle neck especially when there are more number of threads.The best way to solve this is to use an IOCP with a pool of threads that can work with multiple client connections simultaneously. This can be achieved using some simple steps...Create a client connection listen socket. Once we get the client connection, post an IOCP read message on the socket to an IOCP. One of the threads waiting for completion events on this IOCP will receive the first read message for the client. It immediately posts another read onto the same IOCP and continues processing the read message it got. Once processing the read message is completed, it again waits on the IOCP for another event. This technique will allow a small pool of threads to efficiently handle communication with hundreds of client connections simultaneously. Moreover, this is a proven technique for developing scalable server side applications on Windows platforms.The above is a simplified description of using IOCP in multithreaded systems. There are some good in-depth articles on this topic in CodeProject and the Internet. Do a bit of Googling on words like IO Completion Ports, IOCP, etc., and you will be able to find good articles.2. Introduction - Managed IOCPManaged IOCP is a small .NET class library that provides the second facet of Native Win32 IOCP. This class library can be used both by C# and VB.NET applications. I chose the name Managed IOCP to keep the readers more close to the techniques they are used to with native Win32 IOCP. As the name highlights, Managed IOCP is implemented using pure .NET managed classes and pure .NET synchronization primitives. At its core, it provides a thread-safe object queuing and waitable object receive mechanism. Apart from that, it provides a lot more features. Here is what it does:Multiple Managed IOCP instances per process. Registration of multiple threads per Managed IOCP instance. Dispatching System.Object types to a threadsafe queue maintained by each Managed IOCP instance. Waitable multi-thread safe retrieval of objects from the Managed IOCP instance queue by all the threads registered for that particular Managed IOCP instance. Ability to restrict the number of concurrent active threads processing the queued objects related to a particular Managed IOCP instance. Policy based replaceable/customizable approach for choosing a registered thread to process the next available queued object. Ability to pause the Managed IOCP processing. Internally, pauses processing of queued objects by registered threads. Also, by default, disallows enqueuing new objects (can be changed). Run the Managed IOCP instance. Internally re-starts the processing of queued objects by registered threads. Also allows enqueuing new objects (if it is disallowed previously). Modify the max. allowed concurrent threads at runtime. Provides easy accessibility to Managed IOCP instance runtime properties like... Number of active concurrent threads. Number of objects left in queue. Number of allowed concurrent threads. Running status. Safe and controlled closing of a Managed IOCP instance. 2.1. Managed IOCP in Job/Task Oriented Business ProcessesManaged IOCP can be used in other scenarios apart from the sample that I mentioned in the introduction to native Win32 IOCP. It can be used in process oriented server side business applications. For instance, if you have a business process ( _not_ a Win32 process) with a sequence of tasks that will be executed by several clients, you will have to execute several instances of the business process, one for each client in parallel. As mentioned in my introduction to native Win32 IOCP, you can achieve this by spawning one dedicated thread per business process instance. But the system will quickly run out of resources, and the system/application performance will come down as more instances are created. Using Managed IOCP, you can achieve the same sequential execution of multiple business process instances, but with fewer threads. This can be done by dispatching each task in a business process instance as an object to Managed IOCP. It will be picked up by one of the waiting threads and will be executed. After completing the execution, the thread will dispatch the next task in the business process instance to the same Managed IOCP, which will be picked up by another waiting thread. This is a continuous cycle. The advantage is that you will be able to achieve the sequential execution goal of a business process, as only one waiting thread can receive a dispatched object, and at the same time keep the system resource utilization to required levels. Also, the system and business process execution performance will increase as there are few threads executing multiple parallel business processes.3. Using Managed IOCP in .NET applicationsMultithreaded systems are complex in the context that most problems will show up in real time production scenarios. To limit the possibility of such surprises while using Managed IOCP, I created a test application using which several aspects of the Managed IOCP library can be tested. Nevertheless, I look forward for any suggestions/corrections/inputs to improve this library and its demo application.Before getting into the demo application, below is the sequence of steps that an application would typically perform while using the Managed IOCP library:Create an instance of the ManagedIOCP class: 2. using Sonic.Net;ManagedIOCP mIOCP = new ManagedIOCP();The ManagedIOCP constructor takes one argument, concurrentThreads. This is an integer that specifies how many maximum concurrent active threads are allowed to process objects queued onto this instance of ManagedIOCP. I used a no argument constructor, which defaults to a maximum of one concurrent active thread.From a thread that needs to wait on objects queued onto the ManagedIOCP instance, call the Register() method on the ManagedIOCP instance. This will return an instance of the IOCPHandle class. This is like native Win32 IOCP handle, using which the registered thread can wait on the arrival of objects onto the ManagedIOCP instance. This thread can use the Wait() method on the IOCPHandle object. The Wait() will indefinitely wait until it grabs an object queued onto the ManagedIOCP instance to which the calling thread is registered. It either comes out with an object, or an exception in case the ManagedIOCP instance is stopped (we will cover this later). 4. IOCPHandle hIOCP = mIOCP.Register();5. while(true)6. {7. try8. {9. object obj = hIOCP.Wait();10. // Process the object11. 12. }13. catch(ManagedIOCPException e)14. {15. break;16. }17. catch(Exception e)18. {19. break;20. }}Any thread (one that is registered with the ManagedIOCP instance and any non-registered thread) that has access to the ManagedIOCP instance can dispatch (Enqueue) objects to it. These objects are picked up by waiting threads that are registered with the ManagedIOCP instance onto which objects are being dispatched. 22. string str = “Test string“;mIOCP.Dispatch(str);When a thread decides not to wait for objects any more, it should un-register with the ManagedIOCP instance. mIOCP.UnRegister();Once the application is done with an instance of ManagedIOCP, it should call the Close() method on it. This will release any threads waiting on this instance of ManagedIOCP, clears internal resources, and resets the internal data members, thus providing a controlled and safe closure of a ManagedIOCP instance. mIOCP.Close();There are certain useful statistics that are exposed as properties in the ManagedIOCP class. You can use them for fine tuning the application during runtime.// Current number of threads that are // concurrently processing the objects queued // onto this instance of Managed IOCP // (This is readonly property) int activeThreads = mIOCP.ActiveThreads;// Max number of concurrent threads // allowed to process objects queued onto this // instance of Managed IOCP (This is a read/write property) int concurThreads = mIOCP.ConcurrentThreads;// Current count of objects queued onto this Managed IOCP instance. // NOTE: This value may change very quickly // as multiple concurrent threads might // be processing objects from this instance of Managed IOCP queue. // So _do not_ depend on this value // for logical operations. Use this only for // monitoring purpose (Status reporting, etc.) // and during cleanup processes // (like not exiting main thread untill the queued object becomes 0, // i.e. no more objects to be processed, etc) // (This is readonly property) int qCount = mIOCP.QueuedObjectCount;// Number of threads that are registered with this instance of Managed IOCP // (This is readonly property) int regThreadCount = mIOCP.RegisteredThreads;3.1. Advanced usageFollowing are the advanced features of Managed IOCP that need to be used carefully.Managed IOCP execution can be paused at runtime. When a Managed IOCP instance is paused, all the threads registered with this instance of Managed IOCP will stop processing the queued objects. Also, if the ’EnqueueOnPause’ property of the ManagedIOCP instance is false (by default, it is false), then no thread will be able to dispatch new objects onto the Managed IOCP instance queue. Calling Dispatch on the ManagedIOCP instance will throw an exception in the Pause state. If the ’EnqueueOnPause’ property is set to true, then threads can dispatch objects onto the queue, but you need to be careful while setting this property to true, as this will increase the number of pending objects in the queue, thus occupying more memory. Also, when the Managed IOCP instance is re-started, all the registered threads will suddenly start processing a huge number of objects thus creating greater hikes in the system resource utilization.mIOCP.Pause();Once paused, the ManagedIOCP instance can be re-started using the Run method.mIOCP.Run();The running status of the Managed IOCP instance can be obtained using the IsRunning property:bool bIsRunning = mIOCP.IsRunning;You can retrieve the System.Threading.Thread object of the thread associated with the IOCPHandle instance, from its property named ’OwningThread’.3.2. Demo ApplicationI provided two demo applications with similar logic. The first is implemented using Managed IOCP, the other using native Win32 IOCP. These two demo applications perform the following steps:Create a global static ManagedIOCP instance or native Win32 IOCP. Create five threads. Each thread will dispatch one integer value at a time to the ManagedIOCP instance or native Win32 IOCP until the specified number of objects are completed. Start (creates a new set of five threads) and stop (closes the running threads) the object processing. The Sonic.Net (ManagedIOCP) demo application additionally demonstrates the following features of Managed IOCP that are unavailable in the Win32 IOCP:Pause and continue object processing during runtime. Change concurrent threads at runtime. Statistics like, Active Threads, Maximum Concurrent threads, Queued Objects Count and Running Status of Managed IOCP. Below is the image showing both the demo applications after their first cycle of object processing:Demo application resultsAs you can see in the above figure, Managed IOCP gives the same speed (slightly even better) as native Win32 IOCP. The goal of these two demo applications is _not_ to compare the speed or features of Win32 IOCP with that of Managed IOCP, but rather to highlight that Managed IOCP provides all the advantages of native Win32 IOCP (with additional features) but in a purely managed environment.I tested these two demo applications on a single processor CPU and a dual processor CPU. The results are almost similar, in the sense the Managed IOCP is performing as good as (sometimes performing better than) native Win32 IOCP.3.3. Source and demo application filesBelow are the details of the files included in the article’s Zip file:Sonic.Net (folder) - I named this class library as Sonic.Net (Sonic stands for speed). The namespace is also specified as Sonic.Net. All the classes that I described in this article are defined within this namespace. The folder hierarchy is described below: 2. Sonic.Net3. |4. --》 Assemblies5. |6. --》 Solution Files7. |8. --》 Sonic.Net9. |10. --》 Sonic.Net Console Demo 11. |--》 Sonic.Net Demo ApplicationThe Assemblies folder contains the Sonic.Net.dll (contains the ObjectPool, Queue, ManagedIOCP, IOCPHandle, and ThreadPool classes), Sonic.Net Demo Application.exe (demo application showing the usage of ManagedIOCP and IOCPHandle classes), and Sonic.Net Console Demo.exe (console demo application showing the usage of ThreadPool and ObjectPool classes).The Solution Files folder contains the VS.NET 2003 solution file for the Sonic.Net assembly project, Sonic.Net demo application WinForms project, and Sonic.Net console demo project.The Sonic.Net folder contains the Sonic.Net assembly source code.The Sonic.Net Console Demo folder contains the Sonic.Net console demo application source code. This demo shows the usage of the Managed IOCP ThreadPool, which is explained in my Managed I/O Completion Ports - Part 2 article. This demo uses a file that will be read by the ThreadPool threads. Please change the file path to a valid one on your system. The code below shows the portion in the code to change. This code is in the ManagedIOCPConsoleDemo.cs file.public static void ReadData(){ StreamReader sr = File.OpenText(@“C:\aditya\downloads\lgslides.pdf“); string st = sr.ReadToEnd(); st = null; sr.Close(); Thread.Sleep(100);}The Sonic.Net Demo Application folder contains the Sonic.Net demo application source code.Win32IOCPDemo (folder) - This folder contains the WinForms based demo application for demonstrating Win32 IOCP usage using PInvoke. When compiled, the Win32IOCPDemo.exe will be created in the Win32IOCPDemo\bin\debug or Win32IOCPDemo\bin\Release folder based on the current build configuration you selected. The default build configuration is set to Release mode. 4. Inside Managed IOCPThis section discusses the how and why part of the core logic that is used to implement Managed IOCP.4.1. Waiting and retrieving objects in Managed IOCPManaged IOCP provides a thread safe object dispatch and retrieval mechanism. This could have been achieved by a simple synchronized queue. But with synchronized queue, when a thread (thread-A) dispatches (enqueues) an object onto the queue, for another thread (thread-B) to retrieve that object, it has to continuously monitor the queue. This technique is inefficient as thread-B will be continuously monitoring the queue for arrival of objects, irrespective of whether the objects are present in the queue. This leads to heavy CPU utilization and thread switching in the application when multiple threads are monitoring the same queue, thus degrading the performance of the system.Managed IOCP deals with this situation by attaching an auto reset event to each thread that wants to monitor the queue for objects and retrieve them. This is why any thread that wants to wait on a Managed IOCP queue and retrieve objects from it has to register with the Managed IOCP instance using its ’Register’ method. The registered threads wait for the object arrival and retrieve them using the ’Wait’ method of the IOCPHandle instance. The IOCPHandle instance contains an AutResetEvent that will be set by the Managed IOCP instance when any thread dispatches an object onto its queue. There is an interesting problem in this technique. Let us say that there are three threads, thread-A dispatching the objects, and thread-B and thread-C waiting on object arrival and retrieving them. Now, say if thread-A dispatches 10 objects in its slice of CPU time. Managed IOCP will set the AutoResetEvent of thread-B and thread-C, thus informing them of the new object arrival. Since it is an event, it does not have an indication of how many times it has been set. So if thread-B and thread-C just wake up on the event set and retrieve one object each from the queue and again waits on the event, there would be 8 more objects left over in the queue unattended. Also, this mechanism would waste the CPU slice given to thread-B and thread-C as they are trying to go into waiting mode after processing a single object from the Managed IOCP queue.So in Managed IOCP, when thread-B and thread-C call the ’Wait’ method on their respective IOCPHandle instances, the method first tries to retrieve an object from the Managed IOCP instance queue before waiting on its event. If it was able to successfully retrieve the object, it does

求以-ble结尾的英文单词

able, alible, arable, enable, gable, liable, rouble, stable, suable, treble, unable, usable, noble, roble, ruble, sable, table, actable, addable, addible, adorable, agitable, alienable, alterable, amiable, arguable, bitable, citable, curable, dabble, dateable, deniable, dibble, dutiable, editable, elidible, eligible, enterable, erodable, erodible, feeble, foible, gabble, gainable, gamble, gettable, gobble, gullable, gullible, gustable, inedible, insoluble, insurable, irritable, laudable, learnable, lendable, minable, mutable, namable, nonarable, parable, pliable, posable, potable, radiable, readable, redouble, relatable, rendible, resalable, resoluble, rideable, ropable, rotatable, sandable, saturable, sendable, singable, slidable, stainable, stateable, stealable, steerable, stubble, stumble, tamable, tangible, tenurable, tolerable, tradable, trainable, treatable, tremble, trustable, turntable, undoable, undouble, uneatable, unedible, unsalable, untenable, utterable, viable, warble, alliable, atonable, audible, bauble, burble, datable, disable, durable, erasable, erosible, fable, gelable, getable, ignoble, inarable, instable, isolable, issuable, leasable, legible, lienable, lineable, listable, loanable, marble, nestable, nettable, nibble, nimble, nobble, nubble, rabble, raisable, ramble, rateable, reelable, reliable, rentable, restable, reusable, ridable, rinsable, rinsible, rubble, ruinable, rumble, rustable, sailable, saleable, satiable, sealable, seisable, sellable, sensible, sortable, statable, stonable, storable, suitable, tannable, tastable, tearable, teasable, tellable, tensible, terrible, testable, tillable, tiltable, titrable, toteable, tumble, tuneable, turnable, unstable, unusable, amble, bible, cable, coble, doable, double, eatable, edible, ennoble, errable, garble, linable, losable, notable, ratable, retable, risible, rulable, salable, seeable, soluble, tenable, totable, triable, trouble, tunable, useable, actionable, admirable, adoptable, allowable, amendable, amicable, arbitrable, beddable, biddable, blamable, bribable, buildable, buyable, cascable, censurable, clubable, cogitable, crucible, culpable, curbable, danceable, debatable, detonatable, digestible, dissemble, distensible, doubtable, drapeable, drawable, drivable, dubitable, emendable, enlargeable, enumerable, enunciable, evadable, evadible, eversible, feedable, filtrable, findable, foldable, fordable, fribble, fungible, giftable, giveable, gnawable, graspable, groupable, growable, hangable, heritable, holdable, honorable, inclinable, inducible, inferable, infusible, inoperable, insociable, irremeable, kibble, killable, kissable, lamentable, licensable, likeable, linkable, measurable, mensurable, metastable, miscible, movable, negligible, nonviable, noticeable, obtainable, palpable, patentable, payable, penetrable, personable, placable, pleadable, preamble, pregnable, probable, reassemble, rebuttable, recallable, reclosable, reducible, referable, refutable, registrable, regrettable, remissible, remittable, renewable, repairable, repealable, repeatable, reportable, resectable, respirable, restrainable, revisable, rippable, scrabble, scramble, screenable, scribble, selectable, severable, shamble, shareable, shedable, sinkable, slakable, spendable, summable, takeable, talkable, tappable, terminable, thimble, tippable, tubbable, typable, unamenable, unbearable, unbeatable, unburnable, undauntable, undesirable, unendurable, unguessable, unifiable, unignorable, unlistenable, unlivable, unlovable, unnameable, unopenable, unpassable, unreasonable, unreturnable, unsayable, unscalable, unseasonable, unsociable, vendable, vendible, venerable, veritable, visitable, vocable, voidable, wadeable, weldable, windable.
able, alible, arable, enable, gable, liable, rouble, stable, suable, treble, unable, usable, noble, roble, ruble, sable, table, actable, addable, addible, adorable, agitable, alienable, alterable, amiable, arguable, bitable, citable, curable, dabble, dateable, deniable, dibble, dutiable, editable, elidible, eligible, enterable, erodable, erodible, feeble, foible, gabble, gainable, gamble, gettable, gobble, gullable, gullible, gustable, inedible, insoluble, insurable, irritable, laudable, learnable, lendable, minable, mutable, namable, nonarable, parable, pliable, posable, potable, radiable, readable, redouble, relatable, rendible, resalable, resoluble, rideable, ropable, rotatable, sandable, saturable, sendable, singable, slidable, stainable, stateable, stealable, steerable, stubble, stumble, tamable, tangible, tenurable, tolerable, tradable, trainable, treatable, tremble, trustable, turntable, undoable, undouble, uneatable, unedible, unsalable, untenable, utterable, viable, warble, alliable, atonable, audible, bauble, burble, datable, disable, durable, erasable, erosible, fable, gelable, getable, ignoble, inarable, instable, isolable, issuable, leasable, legible, lienable, lineable, listable, loanable, marble, nestable, nettable, nibble, nimble, nobble, nubble, rabble, raisable, ramble, rateable, reelable, reliable, rentable, restable, reusable, ridable, rinsable, rinsible, rubble, ruinable, rumble, rustable, sailable, saleable, satiable, sealable, seisable, sellable, sensible, sortable, statable, stonable, storable, suitable, tannable, tastable, tearable, teasable, tellable, tensible, terrible, testable, tillable, tiltable, titrable, toteable, tumble, tuneable, turnable, unstable, unusable, amble, bible, cable, coble, doable, double, eatable, edible, ennoble, errable, garble, linable, losable, notable, ratable, retable, risible, rulable, salable, seeable, soluble, tenable, totable, triable, trouble, tunable, useable, actionable, admirable, adoptable, allowable, amendable, amicable, arbitrable, beddable, biddable, blamable, bribable, buildable, buyable, cascable, censurable, clubable, cogitable, crucible, culpable, curbable, danceable, debatable, detonatable, digestible, dissemble, distensible, doubtable, drapeable, drawable, drivable, dubitable, emendable, enlargeable, enumerable, enunciable, evadable, evadible, eversible, feedable, filtrable, findable, foldable, fordable, fribble, fungible, giftable, giveable, gnawable, graspable, groupable, growable, hangable, heritable, holdable, honorable, inclinable, inducible, inferable, infusible, inoperable, insociable, irremeable, kibble, killable, kissable, lamentable, licensable, likeable, linkable, measurable, mensurable, metastable, miscible, movable, negligible, nonviable, noticeable, obtainable, palpable, patentable, payable, penetrable, personable, placable, pleadable, preamble, pregnable, probable, reassemble, rebuttable, recallable, reclosable, reducible, referable, refutable, registrable, regrettable, remissible, remittable, renewable, repairable, repealable, repeatable, reportable, resectable, respirable, restrainable, revisable, rippable, scrabble, scramble, screenable, scribble, selectable, severable, shamble, shareable, shedable, sinkable, slakable, spendable, summable, takeable, talkable, tappable, terminable, thimble, tippable, tubbable, typable, unamenable, unbearable, unbeatable, unburnable, undauntable, undesirable, unendurable, unguessable, unifiable, unignorable, unlistenable, unlivable, unlovable, unnameable, unopenable, unpassable, unreasonable, unreturnable, unsayable, unscalable, unseasonable, unsociable, vendable, vendible, venerable, veritable, visitable, vocable, voidable, wadeable, weldable, windable.
able, alible, arable, enable, gable, liable, rouble, stable, suable, treble, unable, usable, noble, roble, ruble, sable, table, actable, addable, addible, adorable, agitable, alienable, alterable, amiable, arguable, bitable, citable, curable, dabble, dateable, deniable, dibble, dutiable, editable, elidible, eligible, enterable, erodable, erodible, feeble, foible, gabble, gainable, gamble, gettable, gobble, gullable, gullible, gustable, inedible, insoluble, insurable, irritable, laudable, learnable, lendable, minable, mutable, namable, nonarable, parable, pliable, posable, potable, radiable, readable, redouble, relatable, rendible, resalable, resoluble, rideable, ropable, rotatable, sandable, saturable, sendable, singable, slidable, stainable, stateable, stealable, steerable, stubble, stumble, tamable, tangible, tenurable, tolerable, tradable, trainable, treatable, tremble, trustable, turntable, undoable, undouble, uneatable, unedible, unsalable, untenable, utterable, viable, warble, alliable, atonable, audible, bauble, burble, datable, disable, durable, erasable, erosible, fable, gelable, getable, ignoble, inarable, instable, isolable, issuable, leasable, legible, lienable, lineable, listable, loanable, marble, nestable, nettable, nibble, nimble, nobble, nubble, rabble, raisable, ramble, rateable, reelable, reliable, rentable, restable, reusable, ridable, rinsable, rinsible, rubble, ruinable, rumble, rustable, sailable, saleable, satiable, sealable, seisable, sellable, sensible, sortable, statable, stonable, storable, suitable, tannable, tastable, tearable, teasable, tellable, tensible, terrible, testable, tillable, tiltable, titrable, toteable, tumble, tuneable, turnable, unstable, unusable, amble, bible, cable, coble, doable, double, eatable, edible, ennoble, errable, garble, linable, losable, notable, ratable, retable, risible, rulable, salable, seeable, soluble, tenable, totable, triable, trouble, tunable, useable, actionable, admirable, adoptable, allowable, amendable, amicable, arbitrable, beddable, biddable, blamable, bribable, buildable, buyable, cascable, censurable, clubable, cogitable, crucible, culpable, curbable, danceable, debatable, detonatable, digestible, dissemble, distensible, doubtable, drapeable, drawable, drivable, dubitable, emendable, enlargeable, enumerable, enunciable, evadable, evadible, eversible, feedable, filtrable, findable, foldable, fordable, fribble, fungible, giftable, giveable, gnawable, graspable, groupable, growable, hangable, heritable, holdable, honorable, inclinable, inducible, inferable, infusible, inoperable, insociable, irremeable, kibble, killable, kissable, lamentable, licensable, likeable, linkable, measurable, mensurable, metastable, miscible, movable, negligible, nonviable, noticeable, obtainable, palpable, patentable, payable, penetrable, personable, placable, pleadable, preamble, pregnable, probable, reassemble, rebuttable, recallable, reclosable, reducible, referable, refutable, registrable, regrettable, remissible, remittable, renewable, repairable, repealable, repeatable, reportable, resectable, respirable, restrainable, revisable, rippable, scrabble, scramble, screenable, scribble, selectable, severable, shamble, shareable, shedable, sinkable, slakable, spendable, summable, takeable, talkable, tappable, terminable, thimble, tippable, tubbable, typable, unamenable, unbearable, unbeatable, unburnable, undauntable, undesirable, unendurable, unguessable, unifiable, unignorable, unlistenable, unlivable, unlovable, unnameable, unopenable, unpassable, unreasonable, unreturnable, unsayable, unscalable, unseasonable, unsociable, vendable, vendible, venerable, veritable, visitable, vocable, voidable, wadeable, weldable, windable.
able, alible, arable, enable, gable, liable, rouble, stable, suable, treble, unable, usable, noble, roble, ruble, sable, table, actable, addable, addible, adorable, agitable, alienable, alterable, amiable, arguable, bitable, citable, curable, dabble, dateable, deniable, dibble, dutiable, editable, elidible, eligible, enterable, erodable, erodible, feeble, foible, gabble, gainable, gamble, gettable, gobble, gullable, gullible, gustable, inedible, insoluble, insurable, irritable, laudable, learnable, lendable, minable, mutable, namable, nonarable, parable, pliable, posable, potable, radiable, readable, redouble, relatable, rendible, resalable, resoluble, rideable, ropable, rotatable, sandable, saturable, sendable, singable, slidable, stainable, stateable, stealable, steerable, stubble, stumble, tamable, tangible, tenurable, tolerable, tradable, trainable, treatable, tremble, trustable, turntable, undoable, undouble, uneatable, unedible, unsalable, untenable, utterable, viable, warble, alliable, atonable, audible, bauble, burble, datable, disable, durable, erasable, erosible, fable, gelable, getable, ignoble, inarable, instable, isolable, issuable, leasable, legible, lienable, lineable, listable, loanable, marble, nestable, nettable, nibble, nimble, nobble, nubble, rabble, raisable, ramble, rateable, reelable, reliable, rentable, restable, reusable, ridable, rinsable, rinsible, rubble, ruinable, rumble, rustable, sailable, saleable, satiable, sealable, seisable, sellable, sensible, sortable, statable, stonable, storable, suitable, tannable, tastable, tearable, teasable, tellable, tensible, terrible, testable, tillable, tiltable, titrable, toteable, tumble, tuneable, turnable, unstable, unusable, amble, bible, cable, coble, doable, double, eatable, edible, ennoble, errable, garble, linable, losable, notable, ratable, retable, risible, rulable, salable, seeable, soluble, tenable, totable, triable, trouble, tunable, useable, actionable, admirable, adoptable, allowable, amendable, amicable, arbitrable, beddable, biddable, blamable, bribable, buildable, buyable, cascable, censurable, clubable, cogitable, crucible, culpable, curbable, danceable, debatable, detonatable, digestible, dissemble, distensible, doubtable, drapeable, drawable, drivable, dubitable, emendable, enlargeable, enumerable, enunciable, evadable, evadible, eversible, feedable, filtrable, findable, foldable, fordable, fribble, fungible, giftable, giveable, gnawable, graspable, groupable, growable, hangable, heritable, holdable, honorable, inclinable, inducible, inferable, infusible, inoperable, insociable, irremeable, kibble, killable, kissable, lamentable, licensable, likeable, linkable, measurable, mensurable, metastable, miscible, movable, negligible, nonviable, noticeable, obtainable, palpable, patentable, payable, penetrable, personable, placable, pleadable, preamble, pregnable, probable, reassemble, rebuttable, recallable, reclosable, reducible, referable, refutable, registrable, regrettable, remissible, remittable, renewable, repairable, repealable, repeatable, reportable, resectable, respirable, restrainable, revisable, rippable, scrabble, scramble, screenable, scribble, selectable, severable, shamble, shareable, shedable, sinkable, slakable, spendable, summable, takeable, talkable, tappable, terminable, thimble, tippable, tubbable, typable, unamenable, unbearable, unbeatable, unburnable, undauntable, undesirable, unendurable, unguessable, unifiable, unignorable, unlistenable, unlivable, unlovable, unnameable, unopenable, unpassable, unreasonable, unreturnable, unsayable, unscalable, unseasonable, unsociable, vendable, vendible, venerable, veritable, visitable, vocable, voidable, wadeable, weldable, windable.

”完整的”用英语怎么说

完整的英语为 complete、whole、integrate、intact 和 unbroken 等:

一、complete

1、音标:英

2、词源:14世纪晚期进入英语,直接源自古法语的complet;最初源自拉丁语的completus,意为装满,倒满。

3、释义:

(1)形容词(adj.):完整的,完成的,用以强调完全的。

(2)及物动词(vt.):完成,使完满,结束,填写(表格)。

4、例句:No garden is complete without a bed of rose bushes.(译文:没有玫瑰花圃的花园是不完整的。)

二、whole

1、音标:英  

2、词源:直接源自古英语的hal,意为全部的,未受损害的,健康的;最初源自原始日耳曼语的khailaz,意为未被破坏的。

3、释义:

(1)形容词(adj.):完整的,全部的,所有的。

(2)名词(n.):全部,整体,整个。

4、例句:To have a unified and whole you.(译文:成为一个统一的完整的你。)

三、integrate

1、音标:英  

2、词源:1630年左右进入英语,直接源自古典拉丁语的integratus,意为提供。

3、释义:

(1)及物动词(vt.):使一体化,使整合,使完整,使结合成为整体。

(2)不及物动词(vi.):成为一体,结合在一起,合并,作积分运算。

(3)形容词(adj.):整体的,完整的,完全的,综合的。

4、例句:PSA is on the basis of integrate reliability data. (译文:完整的可靠性数据是PSA分析的基础。)

四、intact

1、音标:英  

2、词源:15世纪中期,从拉丁语的 intactus,意为未接触、未受伤、未归档的,从 in-(否定前缀)+tactus,过去分词接触。

3、释义:形容词(adj.):原封不动的,完整无缺的,未经触动的。

4、例句:At one time, your DNA was intact. (译文:一度,你们的DNA是完整无缺的。)

五、unbroken

1、音标:英  

2、词源:来自un-(否定前缀)+broken,古英语有ungerocen。15世纪后期动词表示物质事物,1510年代关于勇气、精神等,1530年代关于马,1560年代关于时间流动。

3、释义:形容词(adj.):连续的,未破损的,土地未破土的。

4、例句:I pray for this heart to be unbroken .(译文:我祈祷这颗心永远不碎。)

Unity动画状态机中断机制

博客原文: Wait, I’ve changed my mind! State Machine Transition interruptions

I recently investigated a tricky bug reported by a user involving the combination of empty states, override layers, and transition interruptions. As I was digging in, I found that our documentation about transition interruptions in the animation system was a bit… minimalist. A long conversation with my team later, we concluded that a blog post was in order.

我最近调查了一个用户诡异的BUG报告,其中涉及了空状态、覆盖层级、转换中断。在深入探究后,我发现我们关于动画系统中转换中断的文档有一些……极简主义。经过与团队的长时间讨论之后,我们总结出了这篇博客。

So let’s dive into some intricate details of State Machine Transitions and interruptions!

By default in the animation system, transitions cannot be interrupted: once you start going from one state to the other, there’s no way out. Like a passenger on a transatlantic flight, you’re cozily nestled in your seat until you reach your destination and you can’t change your mind. For most users, this is fine.

让我们来看看一些复杂的状态机转换和中断的细节!

默认的情况下,动画系统的转换是不可中断的:当你开始从一个状况转换到另一个状态,是没有其他出路的。就像跨大西洋航班的乘客一样,在到达了你的目的地之前,你只能待在位置上。对于大多数使用者,这是OK的。

But if you need more control over transitions, Mecanim can be configured in a variety of ways to meet your needs. If you’re unhappy with your current destination, you can hop in the pilot’s seat and can change plans midway through your flight. This means more responsive animations, but also many opportunities to get lost in the complexity.

但是如果你对转换有更多控制需求,可以通过各种方式配置Mecanim,以满足这些需求。如果你对当前航班的目的地不满意,你可以在中途改变它。也就是说,这将是一个更灵活的动画,但使用者会很有可能搞不清这些复杂的机制。

So let’s walk through a few examples to sort that out. We can begin with a fairly simple state machine with four states, labeled A to D, and triggers hooked to every transition on the state machine.

那么让我们通过一些简单的例子来搞懂它吧。我们先建立一个简单的状态机,其中有A B C D四个状态,同时将触发器挂载到每个转换上。

建立状态机

By default, when we trigger the A-》B transition, our state machine transitions towards B and nothing can keep it from reaching its destination. But if we go on the A-》B transition inspector and change the interruption source from “None” to “Current State”, our journey from A to B can be interrupted by some triggers on state A.

在默认情况下,当我们触发了A-》B的转换时,我们的状态机开始向转向B,而且没有什么可以阻止它到达目的地。但是如果我们去A-》B的转换面板上修改Interruption Source(中断源) “None“ -》 “Current State“,从A到B的转换可以被A上的一些触发器中断。

A-》B的转换面板

Why only “some”? Because the “Ordered Interruption” checkbox is also checked by default. This means only transitions on state A that have a higher priority than the current one are allowed. Looking at the inspector of state A, we can see that this only applies to the A-》C transition.

为什么是「一些」?因为“Ordered Interruption“(有序中断)是被默认勾选的。也就是说,只有A上有更高优先级的转换是生效的。在A状态的面板上,我们可以看到只有A-》C的转换是生效的。

A状态的面板

So if we activate the A-》B trigger, then shortly after the A-》D trigger, our transition remains uninterrupted. However, if we press the A-》C trigger instead, then the transition is immediately interrupted and the state machine starts transitioning towards C.

所以,如果我们激活了A-》B的触发器,然后触发A-》D的触发器,我们的转换依然不会被中断。然而,如果我们触发A-》C的触发器,当前的转换会立即被中断,同时状态机开始向C转换。

Internally, the animation system records the pose at the time of the interruption, and will now blend between that static pose (X) and the new destination animation.

这个机制内部,动画系统记录了中断时的pose数据,并使用这个静态的pose数据与新的目标动画进行混合。

动画混合示意图

Why a static pose, instead of a possibly smoother blend between the current and new transitions? Simply put: performance. When a game faces a cascade of interruptions, keeping track of several dynamic transitions taking place simultaneously would quickly made the animation system unscalable.

为什么是静态pose数据,而不是在当前和新的转换之间可能更平滑的融合? 简单地说:性能。 当游戏面临一连串的中断时,跟踪同时发生的几个动态转换将迅速使动画系统不可扩展。

Now, if we uncheck that “Ordered Interruption” checkbox, then both A-》C and A-》D can interrupt the transition. However, if they are both triggered on the same frame, A-》C will still take precedence because it has a higher priority.

如果我们取消“Ordered Interruption“(有序中断)的勾选, A-》C 和 A-》D都可以中断 A-》B 的转换。尽管如此,如果它们都在同一帧被触发,依然是A-》C优先,因为它有更高的优先级。

If we change the interruption source to “Next State”, A-》C and A-》D can no longer interrupt the transition, regardless of their order. However, if we press the B-》D trigger, we will immediately start transitioning from A to D, without completing the transition towards B.

如果我们将Interruption Source(中断源) 改为“Next State“,A-》C 和 A-》D 将不再中断转换,无论她们的优先级。尽管如此,如果我们触发了B-》D 的触发器,在完成向B的转换之前,状态机将会立即开始A-》D的转换。

Transition order matters on state B too. The “Ordered Interruption” checkbox is not available anymore (any triggered transition on B can interrupt the transition because they do not have a priority ranking relative to A-》B), but the order of the transitions on B will determine which transition wins if both are triggered within the same frame. In this case, if B-》D and B-》C are triggered in the same frame, B-》D will be selected.

转换的优先情况也在B上。“Ordered Interruption“(有序中断)不再生效(触发任何B上的任何转换条件都可以撞断转换,因为它们相对A-》B没有优先级),但是如果多个转换条件在同一帧被触发,依然由在B上的优先级决定哪个生效。例如:如果 B-》D 和 B-》C 在同一帧被触发,B-》D 将会生效。

B上的转换条件

Finally, for complete control, we can set the Interruption Source to “Current State Then Next State”, or “Next State Then Current State”. In that case, the transitions will be analyzed independently on one state, then the other. So, let’s assume we have the following configuration.

最后,为了完全控制,我们可以设置Interruption Source(中断源) 为“Current State Then Next State“或“Next State Then Current State“。在这种情况下,转换将在一个状态下独立分析,然后另一个状态。我们假设有以下配置:

配置

During the A-》B transition, a very excited player triggers four transitions within the same frame: A-》C, A-》D, B-》C and B-》D. What happens?First, “Ordered Interruption” is checked, so we can ignore A-》D right away: it has lower priority than A-》B. The current state gets resolved first, so we do not even have to look at state B to know that transition A-》C wins.

在A-》B的转换期间,在同一帧触发了A-》C  A-》D  B-》C  B-》D,会发生什么呢?

首先,“Ordered Interruption“(有序触发)是生效的,我们可以忽略A-》D,因为它的优先级比A-》B低。

其次,“Current State Then Next State“,我们可以忽略B上的转换(B-》C  B-》D),因为当前的状态高于下一个状态。

最终,我们发现A-》C竞争成功。

A上的转换条件

B上的转换条件

However, with the same configuration, if only B-》C and B-》D get triggered, transition B-》D will take place (it has greater precedence than B-》C).

在相同的配置下,如果在同一帧只触发了B-》C  B-》D,那么B-》D将会生效,因为它有着更高的优先级。

Now, this is only for one transition… All other transitions can also be interruptible too, with their own specific rules. So if we make transition A-》C interruptible from the next state, we can have transition A-》B interrupted by A-》C which in turn could be interrupted by C-》D.

以上为只有一个转换的情况。其他的转换条件同样可以根据具体的规则中断它。

所有如果我们使A-》C可以在“Next State“中被中断,那么我们让A-》C中断A-》B,在其转换过程中同样有可能被C-》D中断。

One important thing to keep in mind: regardless of interruptions taking place, the source state remains the same until the transition is complete, and Animator.GetCurrentAnimatorStateInfo() will always return that source state.

一个非常重要的事情需要被记得:无论中断是否发生,在转换完成之前,源状态是不会改变的。所以 Animator.GetCurrentAnimatorStateInfo()将一直返回源状态。

In short, transition interruptions settings are powerful and offer a lot of flexibility, but they can quickly become very confusing. So use transition interruptions wisely, and when in doubt, test it out in the Editor.

简而言之,转换中断机制是一个强大且灵活的,但也能很快变得非常复杂。所以明智地使用转换中断,当有疑问时,在器中测试它。

链接:https://www.jianshu.com/p/c188e1f48522

求以-ble结尾的英文单词 哪个写的越多,给那个分

able, alible, arable, enable, gable, liable, rouble, stable, suable, treble, unable, usable, noble, roble, ruble, sable, table, actable, addable, addible, adorable, agitable, alienable, alterable, amiable, arguable, bitable, citable, curable, dabble, dateable, deniable, dibble, dutiable, editable, elidible, eligible, enterable, erodable, erodible, feeble, foible, gabble, gainable, gamble, gettable, gobble, gullable, gullible, gustable, inedible, insoluble, insurable, irritable, laudable, learnable, lendable, minable, mutable, namable, nonarable, parable, pliable, posable, potable, radiable, readable, redouble, relatable, rendible, resalable, resoluble, rideable, ropable, rotatable, sandable, saturable, sendable, singable, slidable, stainable, stateable, stealable, steerable, stubble, stumble, tamable, tangible, tenurable, tolerable, tradable, trainable, treatable, tremble, trustable, turntable, undoable, undouble, uneatable, unedible, unsalable, untenable, utterable, viable, warble, alliable, atonable, audible, bauble, burble, datable, disable, durable, erasable, erosible, fable, gelable, getable, ignoble, inarable, instable, isolable, issuable, leasable, legible, lienable, lineable, listable, loanable, marble, nestable, nettable, nibble, nimble, nobble, nubble, rabble, raisable, ramble, rateable, reelable, reliable, rentable, restable, reusable, ridable, rinsable, rinsible, rubble, ruinable, rumble, rustable, sailable, saleable, satiable, sealable, seisable, sellable, sensible, sortable, statable, stonable, storable, suitable, tannable, tastable, tearable, teasable, tellable, tensible, terrible, testable, tillable, tiltable, titrable, toteable, tumble, tuneable, turnable, unstable, unusable, amble, bible, cable, coble, doable, double, eatable, edible, ennoble, errable, garble, linable, losable, notable, ratable, retable, risible, rulable, salable, seeable, soluble, tenable, totable, triable, trouble, tunable, useable, actionable, admirable, adoptable, allowable, amendable, amicable, arbitrable, beddable, biddable, blamable, bribable, buildable, buyable, cascable, censurable, clubable, cogitable, crucible, culpable, curbable, danceable, debatable, detonatable, digestible, dissemble, distensible, doubtable, drapeable, drawable, drivable, dubitable, emendable, enlargeable, enumerable, enunciable, evadable, evadible, eversible, feedable, filtrable, findable, foldable, fordable, fribble, fungible, giftable, giveable, gnawable, graspable, groupable, growable, hangable, heritable, holdable, honorable, inclinable, inducible, inferable, infusible, inoperable, insociable, irremeable, kibble, killable, kissable, lamentable, licensable, likeable, linkable, measurable, mensurable, metastable, miscible, movable, negligible, nonviable, noticeable, obtainable, palpable, patentable, payable, penetrable, personable, placable, pleadable, preamble, pregnable, probable, reassemble, rebuttable, recallable, reclosable, reducible, referable, refutable, registrable, regrettable, remissible, remittable, renewable, repairable, repealable, repeatable, reportable, resectable, respirable, restrainable, revisable, rippable, scrabble, scramble, screenable, scribble, selectable, severable, shamble, shareable, shedable, sinkable, slakable, spendable, summable, takeable, talkable, tappable, terminable, thimble, tippable, tubbable, typable, unamenable, unbearable, unbeatable, unburnable, undauntable, undesirable, unendurable, unguessable, unifiable, unignorable, unlistenable, unlivable, unlovable, unnameable, unopenable, unpassable, unreasonable, unreturnable, unsayable, unscalable, unseasonable, unsociable, vendable, vendible, venerable, veritable, visitable, vocable, voidable, wadeable, weldable, windable.
able, alible, arable, enable, gable, liable, rouble, stable, suable, treble, unable, usable, noble, roble, ruble, sable, table, actable, addable, addible, adorable, agitable, alienable, alterable, amiable, arguable, bitable, citable, curable, dabble, dateable, deniable, dibble, dutiable, editable, elidible, eligible, enterable, erodable, erodible, feeble, foible, gabble, gainable, gamble, gettable, gobble, gullable, gullible, gustable, inedible, insoluble, insurable, irritable, laudable, learnable, lendable, minable, mutable, namable, nonarable, parable, pliable, posable, potable, radiable, readable, redouble, relatable, rendible, resalable, resoluble, rideable, ropable, rotatable, sandable, saturable, sendable, singable, slidable, stainable, stateable, stealable, steerable, stubble, stumble, tamable, tangible, tenurable, tolerable, tradable, trainable, treatable, tremble, trustable, turntable, undoable, undouble, uneatable, unedible, unsalable, untenable, utterable, viable, warble, alliable, atonable, audible, bauble, burble, datable, disable, durable, erasable, erosible, fable, gelable, getable, ignoble, inarable, instable, isolable, issuable, leasable, legible, lienable, lineable, listable, loanable, marble, nestable, nettable, nibble, nimble, nobble, nubble, rabble, raisable, ramble, rateable, reelable, reliable, rentable, restable, reusable, ridable, rinsable, rinsible, rubble, ruinable, rumble, rustable, sailable, saleable, satiable, sealable, seisable, sellable, sensible, sortable, statable, stonable, storable, suitable, tannable, tastable, tearable, teasable, tellable, tensible, terrible, testable, tillable, tiltable, titrable, toteable, tumble, tuneable, turnable, unstable, unusable, amble, bible, cable, coble, doable, double, eatable, edible, ennoble, errable, garble, linable, losable, notable, ratable, retable, risible, rulable, salable, seeable, soluble, tenable, totable, triable, trouble, tunable, useable, actionable, admirable, adoptable, allowable, amendable, amicable, arbitrable, beddable, biddable, blamable, bribable, buildable, buyable, cascable, censurable, clubable, cogitable, crucible, culpable, curbable, danceable, debatable, detonatable, digestible, dissemble, distensible, doubtable, drapeable, drawable, drivable, dubitable, emendable, enlargeable, enumerable, enunciable, evadable, evadible, eversible, feedable, filtrable, findable, foldable, fordable, fribble, fungible, giftable, giveable, gnawable, graspable, groupable, growable, hangable, heritable, holdable, honorable, inclinable, inducible, inferable, infusible, inoperable, insociable, irremeable, kibble, killable, kissable, lamentable, licensable, likeable, linkable, measurable, mensurable, metastable, miscible, movable, negligible, nonviable, noticeable, obtainable, palpable, patentable, payable, penetrable, personable, placable, pleadable, preamble, pregnable, probable, reassemble, rebuttable, recallable, reclosable, reducible, referable, refutable, registrable, regrettable, remissible, remittable, renewable, repairable, repealable, repeatable, reportable, resectable, respirable, restrainable, revisable, rippable, scrabble, scramble, screenable, scribble, selectable, severable, shamble, shareable, shedable, sinkable, slakable, spendable, summable, takeable, talkable, tappable, terminable, thimble, tippable, tubbable, typable, unamenable, unbearable, unbeatable, unburnable, undauntable, undesirable, unendurable, unguessable, unifiable, unignorable, unlistenable, unlivable, unlovable, unnameable, unopenable, unpassable, unreasonable, unreturnable, unsayable, unscalable, unseasonable, unsociable, vendable, vendible, venerable, veritable, visitable, vocable, voidable, wadeable, weldable, windable.
able, alible, arable, enable, gable, liable, rouble, stable, suable, treble, unable, usable, noble, roble, ruble, sable, table, actable, addable, addible, adorable, agitable, alienable, alterable, amiable, arguable, bitable, citable, curable, dabble, dateable, deniable, dibble, dutiable, editable, elidible, eligible, enterable, erodable, erodible, feeble, foible, gabble, gainable, gamble, gettable, gobble, gullable, gullible, gustable, inedible, insoluble, insurable, irritable, laudable, learnable, lendable, minable, mutable, namable, nonarable, parable, pliable, posable, potable, radiable, readable, redouble, relatable, rendible, resalable, resoluble, rideable, ropable, rotatable, sandable, saturable, sendable, singable, slidable, stainable, stateable, stealable, steerable, stubble, stumble, tamable, tangible, tenurable, tolerable, tradable, trainable, treatable, tremble, trustable, turntable, undoable, undouble, uneatable, unedible, unsalable, untenable, utterable, viable, warble, alliable, atonable, audible, bauble, burble, datable, disable, durable, erasable, erosible, fable, gelable, getable, ignoble, inarable, instable, isolable, issuable, leasable, legible, lienable, lineable, listable, loanable, marble, nestable, nettable, nibble, nimble, nobble, nubble, rabble, raisable, ramble, rateable, reelable, reliable, rentable, restable, reusable, ridable, rinsable, rinsible, rubble, ruinable, rumble, rustable, sailable, saleable, satiable, sealable, seisable, sellable, sensible,

特别声明

本文仅代表作者观点,不代表本站立场,本站仅提供信息存储服务。

分享:

扫一扫在手机阅读、分享本文