读书笔记—CLR via C#线程27章节】的更多相关文章

前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 同步IO执行过程,拿Read举例 托管代码转变为本地用户模式代码,Read在内部调用Win32的ReadFile函数 ReadFile分配IRP(IO Request Packet) IRP包括:一个文件句柄.文件偏移量.Byte[]数组 IO…
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 线程 线程内部组成 线程内核对象 thread kernel object,在该结构中,包含一组对线程进行描述的属性.数据结构中还包括所谓的线程上下文thread context.上下文是一个内存块,包含了CPU的寄存器集合,占用几百到几千个字…
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 事件 事件的本质 初始化为null的私有委托字段 封装add_Event和remove_Event方法 add_Event和remove_Event的可访问性同Event字段的可访问性,包括virtual和static修饰 事件的编码建议 使用…
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 构造函数 抽象类默认的构造函数可访问为protected,普通类默认为public 派生类默认调用一个基类构造器(如果没有无参构造器,则需要显式调用) 不通过构造函数创建对象? 静态方法Object.MemberwiseClone,分配内存复制…
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 对象的祖先 – Object 公共方法 Equals, 虚方法,对象相等性,默认调用RuntimeHelpers.Equals方法 GetHashCode,虚方法,返回哈希吗(随机分布的整数),在哈希表中作为键使用 ToString , 默认返…
这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享. 强命名程序集 优点 程序集共享 版本共存,解决DLL hell 安全策略(防篡改) 发布策略控制 标识组成 文件名(不计扩展名)+版本号+语言文化+公钥 CLR加载方式 弱命名程序集私有部署,CLR在基目录或子目录中搜索时只使用程序集名称 CLR搜…
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 类库和线程安全 在类设计中,类和方法的线程安全的设计尽量和FCL保持一致 保证所有的静态方法都是线程安全的 不保证实例方法是线程安全的 基元用户模式和基元内核模式构造 用户模式构造 易失构造(volatile construct),它包含一个简…
这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享. 程序集 描述:一个或多个类型定义文件及资源文件的集合 特征:可重用.可保护.可版本控制的单元 生成:可通过C#编译器(或其他编译器)或AL.exe生成 组成: 托管模块(module) PE头,PE32或PE32+,面向CPU架构的信息 CLR头,…
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 Tips vs调试catch块时,监视窗口变量: $exception 查看当前抛出的异常对象 异常的catch是自上而下,回溯调用栈,如果未找到,就抛出未处理异常 异常的执行顺序:先执行body,再执行catch,最后执行finally 堆栈…
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 字符(System.Char) 字符在.NET 中表示成16位Unicode代码值 System.Char.MinValue = '\0'   MaxValue = '\uffff' 实例方法GetUnicodeCategory,返回Syste…
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 程序集加载 AppDomain.Load 尽量避免使用此方法加载程序集,因为Assembly不是从System.MarshalByRefObject派生,所以程序集对象必须按值封送回发出调用的那个AppDomain,但是CLR会使用发出调用的那…
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 委托 类型安全的回调函数,函数签名定义声明.指向静态或实例方法 派生自System.MulticastDelegate的类 将方法绑定到委托时,C#和CLR都允许引用类型的协变性和逆变性 协变性指方法能返回从委托的返回类型派生的类型 逆变性是指…
<一>线程间通信方法 全局变量方式:进程中的线程共享全局变量,可以通过全局变量进行线程间通信. 参数传递法:主线程创建子线程并让子线程为其服务,因此主线程和其他线程可以通过参数传递进行通信.主线程在创建其他线程时,可以传递参数给线程函数以达到通信目的. 消息传递法:线程间通信的重要方式,通过调用PostMessage()函数在主线程和工作线程间传递消息:调用PostThreadMessage()函数在用户界面线程和其他线程间传递消息. 同步变量法:此方法在后续章节涉及. <二>线程…
#1 CLR寄宿: 开发CLR时,Microsoft实际是将他实现成包含在一个dll中的COM服务器.Microsoft为CLR定义了一个标准的COM接口,并为该接口和COM服务器分配了GUID.安装.NET Framework时,代表CLR的COM服务器在Windows注册表中注册. 任何Windows应用程序都可以寄宿CLR,非托管宿主应该调用MetaHost.h文件中声明的CLRCreateInstance函数,该函数是在MSCoreEE.dll文件中实现的,该dll被称为"垫片"…
本章主要介绍了线程,了解如何使用多线程在单进程环境中来执行多任务.由于多个线程共享其进程空间,所以必须采用同步的机制来保护数据的一致性. 一.线程的概念 典型的Unix系统都可以看成只有一个控制线程,一个进程在同一时刻只能做一件事.但有了多线程,我们可以设计成在同一时刻进程能做不止一件事,每个线程处理各自独立的任务.进程的所有信息对该进程的所有线程都是共享的,包括可执行的程序文本.程序的全局内存和堆内存.栈以及文件描述符. 二.线程标识 #include <pthread.h> int pth…
2.线程的安全性 2.1什么是线程安全 在多个线程访问的时候,程序还能"正确",那就是线程安全的. 无状态(可以理解为没有字段的类)的对象一定是线程安全的. 2.2 原子性 典型的例子,多线程状态下的i++是不安全的.因为i++其实是分很多步骤实现的,多个线程的执行过程可能会相互混乱. 竞态条件(Race Conditions) 线程与线程之间需要依赖于执行顺序来保证执行结果的正确性.那么就会发生竞态条件.例如在A线程中设置一个值,然后通过另外一信号变量通知给另外一个线程来读.这种协调…
Executor与Task的耦合性 1,除非线程池很非常大,否则一个Task不要依赖同一个线程服务中的另外一个Task,因为这样容易造成死锁: 2,线程的执行是并行的,所以在设计Task的时候要考虑到线程安全问题.如果你认为只会在单任务线程的Executor中运行的话,从设计上讲这就已经耦合了. 3,长时间的任务有可能会影响到其他任务的执行效率,可以让其他线程在等待的时候限定一下等待时间.不要无限制地等待下去. 确定线程池的大小 给出如下定义: 要使CPU达到期望的使用率,线程池的大小应设置为:…
1. 引言 了解如何使用多个控制线程在单进程环境中执行多个任务. 不管在什么情况下,只要单个资源需要在多个用户键共享,就必须处理一致性问题. 2. 线程概念 典型的Unix进程可以看成只有一个控制线程:一个进程在某一时刻只能做一件事情. 多线程带来的好处: 通过为每种事件类型分配单独的处理线程,可以简化处理异步事件的代码.每个线程在进行事件处理时可以采用同步编程模式. 多个进程必须使用操作系统提供的复制机制才能实现内存和文件描述符的共享.而多个线程自动地可以访问相同的存储空间和文件描述符. 有些…
要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问. 修复多线程问题的方式: 不在线程之间共享该状态变量 将状态变量修改为不可变的变量 在访问状态变量时使用同步 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替运行,并且在主调代码中不需要任何额外的同步或协同,这个类都表现出正确的行为,那么就称这个类是线程安全的. 无状态对象一定是线程安全的 原子性 竞态条件:"先检查后执行"."读取-修改-…
目录 一.synchronized 与 volatile 二.等待/通知机制 等待 通知 面试常问的几个问题 sleep方法和wait方法的区别 关于放弃对象监视器 三.等待通知典型 生产者消费者模型 可能会出错的代码 四.使用显式的Lock和Condition Condition接口内的方法详解 Condition与Lock配合 Condition接口与Object监视器 五.管道输入.输出流 六.Thread.join() 七.利用ThreadLocal 在并发编程中,保证线程同步,从而实现…
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76690961冷血之心的博客) 博主准备恶补一番Java高并发编程相关知识,接下来将阅读该书,并且进行比较详细的总结,好记性不如烂笔头,加油. Java多线程编程实战指南(核心篇)读书笔记(四),主要记录该书第七章和第八章的基本概念等知识,后续部分将会持续更新哦~欢迎关注本博客. 目录: Java多线程编程实战指南(核心篇)读书笔记(一) Java多线程编程实战指南…
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76686044冷血之心的博客) 博主准备恶补一番Java高并发编程相关知识,接下来将阅读该书,并且进行比较详细的总结,好记性不如烂笔头,加油. Java多线程编程实战指南(核心篇)读书笔记(三),主要记录该书第五章和第六章的基本概念等知识,后续部分将会持续更新哦~欢迎关注本博客. 目录: Java多线程编程实战指南(核心篇)读书笔记(一) Java多线程编程实战指南…
ASP.NET Core 2 High Performance 大概的翻看了一下这本书,这本C# 7 and .NET Core 2.0 High Performance内容要好很多,这里先放出对应目录,有兴趣的朋友,可以到中国最大IT盗版书网站里找这本书. 读书笔记:2~5章 读书笔记:6~7章 读书笔记:8~12章 目录章节翻译: ASP.NET Core 2 新特性 为什么性能会是一个新特性 为什么性能会是一个特性 常见的性能问题 了解硬件 工具和成本 设置你的开发环境 Windows M…
第二十五章 线程基础 2014-06-28 25.1 Windows为什么要支持线程 25.2 线程开销 25.3 停止疯狂 25.6 CLR线程和Windows线程 25.7 使用专用线程执行异步的计算限制操作 25.8 使用线程的理由 25.9 线程调度和优先级 25.10 前台线程和后台线程 参考 25.1 Windows为什么要支持线程 返回 Microsoft设计OS内核时,他们决定在一个进程(process)中运行应用程序的每个实例.进程不过是应用程序的一个实例要使用的资源的一个集合…
<CLR via C#>读书笔记 之 计算限制的异步操作 2014-07-06 26.1 CLR线程池基础 返回 如25章所述,创建和销毁线程是一个比较昂贵的操作: 太多的线程也会浪费内存资源. 由于操作系统必须调度可运行的线程并执行上下文切换,所以太多的线程还有损于性能. 为了改善这个情况,CLR使用了代码来管理它自己的线程池.可将线程池想像成可由你的应用程序使用的一个线程集合.每个进程都有一个线程池,它在各个应用程序域(AppDomain)是共享的. 线程池是如何工作的: CLR初始化时,…
认识CLR [<CLR via C#>读书笔记] <CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.Net虚拟机所选用的名称.这是通用语言架构(简称CLI)的微软实现版本,它定义了一个代码运行的环境.CLR运行一种称为“通用中间语言”的字节码,这个是微软的通用中间语言实现版本.   CLR运行在微软的视窗操作系统上.查看通用语言架构可以找到该规格的实现版本列表.其中有一些版…
<CLR via C#>读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.Net虚拟机所选用的名称.这是通用语言架构(简称CLI)的微软实现版本,它定义了一个代码运行的环境.CLR运行一种称为“通用中间语言”的字节码,这个是微软的通用中间语言实现版本. CLR运行在微软的视窗操作系统上.查看通用语言架构可以找到该规格的实现版本列表.其中有一些版本是运行在非Windows的操作系统中.(维基百科CLR) 以上定…
前言 万事开头难,很早之前就想写博客记录些东西,迟迟未行动,甚是遗憾.原因诸多,大体上无非都是懒.没意志力等等.这次从自己的读书笔记开始,兴许能够有所改变. 一.CLR概念 CLR(Common Language Runtime,译为公共语言运行时)是一个可由多种编程语言使用的“运行时”.CLR的核心功能:内存管理.程序集加载.安全性.异常处理和线程同步,可由面向CLR的所有语言(C++.C#.VB.F#等等)使用.无论哪种语言,最后通过编译器的结果都是托管模块.托管模块是PE32文件或PE32…
<深入了解java虚拟机>高效并发读书笔记--Java内存模型,线程,线程安全 与锁优化 本文主要参考<深入了解java虚拟机>高效并发章节 关于锁升级,偏向锁,轻量级锁参考<Java并发编程的艺术> 关于线程安全和线程安全的程度参考了<Java并发编程实战> 图片参考https://www.processon.com/u/5dee0443e4b093b9f775065c#pc 一丶Java内存模型 1.概述 多任务处理已经是操作系统的必备技能,计算机被要求…
写了快5年代码了,一直都是使用别人发明的语言,别人发明的框架做快速开发,还从来没有真正深刻的学习过底层的一些东西,于是今年我打算读<CLR Via C#>这本书,认识一下C#的底层,我觉得看这本书起码对日后代码的调优有用,以下读书笔记仅记录我在读书过程中看到的认为有用的,平时不容易被注意到的点.先按照顺序记录,直到书完全看完的那天会对这篇文章做一个分类整理. 第四章-类型基础 if (o is String)//第一次检查 { String b = (String)o;//第二次 } //为此…