核心编程

一.代码协定

1.前提条件

Contract.Requires(bool)

.EndContractBlock();用于兼容旧if判断代码

2.后置条件

.Ensures(bool)

.Result<type>() 返回值

.OldValue<type>(x)返回参数的原始值

.ValueAtResult(out x)返回out参数的值

3.集合检查

.Exists()任一项满足条件

.ForAll()所有项满足条件

4.恒等式条件

.Invariant(bool)

5.接口绑定协定

[ContractClass(typeof(协定实现类))]  接口特性

[ContractClassFor(typeof(接口))] 协定实现类特性

[pure] 常态操作特性

二、并行操作

1.任务

Task t1=new Task(Action<object>);创建新任务

Task t3=new Task(Func<object, result>, data);创建可返回结果的任务

//TaskCreationOptions 指定任务类型

t1.Start();开始运行

Task t2 = t1.ContinueWith(Action<Task>);后继任务,参数为上个任务

//TaskCreationOptions 指定启动时机

t3.Start()

t3.Wait()等待任务完成

t3.Result 提取结果

2.多任务

Parallel.For(0,9,Action<int>); 从0~9重复执行同一个方法

Parallel.For(0,9,Action<int,ParallelLoopState>); ParallelLoopState控制迭代流程

Parallel.For(0,9,Func<init>,Func<int, ParallelLoopState, init, init2>,Action<init2>); Func<init>初始化任务,第二个Func是每次迭代执行的函数,任务返回值交由Action处理。(任务数可能少于迭代次数,也就是系统会重用某一任务,而开始和结尾只有创建任务和结束任务才会调用,函数之间传递的信息需要特别留意)

Parallel.ForEach(source<t>, Action<t>) 同步迭代数据源

Parallel.ForEach(source<t>,Action<t,ParallelLoopState, int>) 带迭代次数和控制参数的版本

3.终止任务

CancellationToken 控制参数

CancellationTokenSource cts=new CancellationTokenSource(); //创建控制参数

cts.Token.Register(Action); //注册取消后执行的方法

cts.Cancel(bool);//取消任务

cts.Token //即CancellationToken

取消任务会产生OperationCanceledException异常。

cts.Token.IsCancellationRequested  是否取消任务

cts.Token.ThrowIfCancellationRequested(); 取消状态下抛出异常

4.共享资源管理

lock(obj) 锁定对象, 或者在该对象内部进行锁定处理可将该对象定义为线程安全对象。

多个锁定对象锁定顺序不一致,可能导致死锁。(个人看法:要么保持锁定顺序一致,要么不要锁定多个关联对象,方法一,改造成线程安全对象,并且每个对象不在解锁前访问另一个线程安全对象;方法二,用单一的锁定对象包裹关联对象,让它们成为一个整体(因为保持顺序一致较难))。

lock(this) 危险语句,因为对象可能在对象外部被锁定。应该用对象的私有成员做锁定标志。

时间: 2024-10-01 07:45:55

核心编程的相关文章

Java核心编程快速学习

Java核心编程部分的基础学习内容就不一一介绍了,本文的重点是JAVA中相对复杂的一些概念,主体内容如下图所示. 反射reflect是理解Java语言工作原理的基础,Java编译器首先需要将我们编写的.java源文件编译为.class字节码,然后再JVM虚拟机上运行,接下来通过一个表格,来了解反射的基本操作. 功能 示例 泛化的Class引用 Class<?> intClass = int.class Class<? extends Number> bounded = int.cl

【转】《windows核心编程》读书笔记

这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLastError可能用于描述成功的原因(CreatEvent)

python核心编程--笔记

python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗余输出(导入语句详细追踪) 1.5 –m mod 将一个模块以脚本形式运行 1.6 –Q opt 除法选项(参阅文档) 1.7 –c cmd 运行以命令行字符串心事提交的python脚本 1.8 file   以给定的文件运行python脚本 2 _在解释器中表示最后

VB 核心编程及通用模块开发 笔记1

前言:学习任何编程语言.编程工具的目的不外乎解决生活问题,能够快速.高效解决问题的方式就是不错的方式,至于选择什么“工具”,众位看官看着办,本人虽然有过3年vb开发经验,但是一直没有深入学习,现已购买 <张宁著 老兵新传  核心编程及通用模块开发>,深入学习vb开发,继续将vb发扬光大. 一.知识准备 本章从API函数开始介绍vb下如何使用api函数,模块.类模块的编写.主要还是阐述的一种思想,通用模块开发,编写的模块能够通用,多次使用,尽量要降低错误,以达到重复利用目的,从通篇介绍来看,以后

《Qt on Android核心编程》勘误

我的第一本技术书籍<Qt on Android核心编程>已经出版上市,书中难免疏漏,存在一些文字和技术上的问题,特记录在此. 本文会不停更新,拿到书的朋友发现问题可以回复本文,我回将问题更新到博文中.提前感谢各位啦. <Qt on Android核心编程>的试读样章在这里,点击下载.购买链接在下面: china-pub 亚马逊 京东1 京东2 淘宝惊喜价 编排说明 本文将结合章节和问题发现的先后顺序来编排,具体是酱紫的:每个章节单列出来作为本文的一节,在该节下按时间顺序列出发现的问

《Qt on Android核心编程》介绍

<Qt on Android核心编程>终于尘埃落定,付梓印刷了. 封面 看看封面的效果吧,历经几版,最终就成了这个样子. 看下封皮: 这是立体版效果: 章节内容简介 第 1 章 欢迎来到Qt的世界,让我们看看Qt是什么,能给我们带来什么,又有谁在使用Qt.我们要约会的Qt on Android,它缘起何处,有着怎样曲折婉转的历史,如今的小模样能否让我们爱之如狂-- 第 2 章 当你遇见了合适的人,开始筹划第一次约会,又是兴奋又是惆怅,要不要买花,去哪里买礼物,穿什么衣服,洒什么香水,带什么应对

【python核心编程】第六章 序列

1.操作符 (1)成员关系操作符:in .not in >>> string ='abcdefg'>>> 'a' in stringTrue>>> 'h' in stringFalse>>> 'h' not in stringTrue *补充知识*:string模块 >>> import string>>> string.uppercase        #大写字母'ABCDEFGHIJKLMNOP

【windows核心编程】DLL相关(2)

关于DLL的延迟加载 延迟加载DLL,使用的是隐式加载方式,当为exe使用的DLL指定为延迟加载的时候,连接器会将exe的[导入段]中去除该DLL的相关信息,同时在exe中嵌入一个新的[延迟加载段]表示要从该DLL中导入哪些函数. 通过让对延迟加载函数的调用跳转到delayimp.lib中的__delayLoadHelper2函数,来完成对延迟加载的DLL的解析. 当exe中第一次调用了一个延迟加载的DLL中的某个导出函数时,加载器才会将该DLL加载到进程地址空间中.需要注意的是:虽然此时已经加

《Python核心编程》 第五章 数字 - 课后习题

课后习题  5-1 整形. 讲讲 Python 普通整型和长整型的区别. 答:普通整型是绝大多数现代系统都能识别的. Python的长整型类型能表达的数值仅仅与你机器支持的(虚拟)内存大小有关. 5-2 运算符 (a) 写一个函数,计算并返回两个数的乘积 (b) 写一段代码调用这个函数,并显示它的结果 答: def pro(a,b): p = a*b return p a = int(raw_input("a=")) b = int(raw_input("b="))

自学python核心编程

之前看过一段时间的小甲鱼零基础自学python,b站上有高清免费资源[av4050443],但是作为零基础实在学得艰难,下载了python核心编程pdf,在这里做一些笔记. 虽然使用的是第二版的教材,但我使用的是python3.5.2,感觉上差别不大,可以阅读. 这里从第二章的练习题开始! -------------------------------------------------------- 2 - 5:用while 和for 打印0-10: i = 0 while i < 11: p