随笔分类 - C#
摘要:概念 Mutex出现的比monitor更早,而且传承自COM,当然,waitHandle也是它的父类,它继承了其父类的功能,有趣的是Mutex的脾气非常的古怪,它 允许同一个线程多次重复访问共享区,但是对于别的线程那就必须等待,同时,它甚至支持不同进程中的线程同步,这点更能体现他的优势,但是劣势也是
阅读全文
摘要:信号量(Semaphore) Semaphore 一般译作 信号量,它也是一种线程同步工具,主要用于多个线程对共享资源进行并行操作的一种工具类。它代表了一种许可的概念,是否允许多线程对同一资源进行操作的许可,使用 Semaphore 可以控制并发访问资源的线程个数。 Semaphore 的使用场景
阅读全文
摘要:线程模式是微软的COM基础中的极其重要的概念.一定要吃透!初始一个STA套间实际上是相当于开了一个消息窗口,所有调用经此窗口过程调度到组件内. [STAThread] 可以理解成CoInitialize(NULL); 初始一个STA套间实际上是相当于开了一个消息窗口,所有调用经此窗口过程调度到组件内
阅读全文
摘要:规则 com组件以接口的方式对外开放。 1:所要导出的类必须为公有; 2:所有属性、方法也必须为公有; 3:要导出的属性、方法必须用接口方式; interface IName { [DispId(1)]//为函数的标识:C#代码中必须定义了接口,才可以按照此方法实现调用。 void ShowAge(
阅读全文
摘要:转自:https://blog.csdn.net/black_bad1993/article/details/53906252 Com组件 1.线程模型是干嘛用的?解决”多个线程”“同时”调用你的COM组件的并发控制。客户没有你的COM的源代码,它不知道你的组件是怎么写的,是不是线程安全的(是否用C
阅读全文
摘要:理论 Windows的线程同步方式可分为2种,用户模式构造和内核模式构造。内核模式构造:是由Windows系统本身使用,内核对象进行调度协助的。内核对象是系统地址空间中的一个内存块,由系统创建维护。 内核对象为内核所拥有,而不为进程所拥有,所以不同进程可以访问同一个内核对象, 如进程,线程,作业,事
阅读全文
摘要:NET上下文的概念 应用程序域是进程中承载程序集的逻辑分区,在应用程序域当中,存在更细粒度的用于承载.NET对象的实体,上下文是用来确定对象的逻辑归属,那就.NET上下文Context。所有的.NET对象都存在于上下文当中,每个AppDomain当中至少存在一个默认上下文(context 0)。 即
阅读全文
摘要:详细:http://lzltool.com/doc/csharptocaddadd
阅读全文
摘要:IntPtr类由来 .NET提供了一个结构体System.IntPtr专门用来代表句柄或指针。句柄是对象的标识符,当调用这些API创建对象时,它们并不直接返回指向对象的指针,而是会返回一个32位或64位的整数值,这个在进程或系统范围内唯一的整数值就是句柄(Handle),随后程序再次访问对象,或者删
阅读全文
摘要:marshal:直译为“编排”, 在计算机中特 指将数据按某种描述格式编排出来,通常来说一般是从非文本格式到文本格式的数据转化。unmarshal是指marshal的逆过程。比如在WebService中,我们需要把java对象以xml方式表示并在网络间传输,把java对象转化成xml片段的过程就是m
阅读全文
摘要:转载自:https://www.cnblogs.com/silverb/p/5300255.html 句柄的基本概念 1、句柄就是进程句柄表中的索引。2、句柄是对进程范围内一个内核对象地址的引用,一个进程的句柄传给另一个进程是无效的。一个内核对象可用有多个句柄。Windows之所以要设立句柄,根本上
阅读全文
摘要:RPC服务的基本架构图如上,可以很清楚地看到,一个完整的RPC架构里面包含了四个核心的组件,分别是Client ,Server,Client Stub以及Server Stub,这个Stub大家可以理解为存根。分别说说这几个组件: 客户端(Client): 服务的调用方。 服务端(Server):真
阅读全文
摘要:一、IOCP(I/O Completion Ports)简介 要实现异步通信,必须要用到一个很风骚的I/O数据结构 ,叫重叠结构“Overlapped”,Windows里所有的异步通信都是基于它的,完成端口也不例外。 Overlapped重叠结构 这里可以简单的将其理解为一个操作系统和用户之间的参数
阅读全文
摘要:overview 这个字符到底是什么含义呢?其实它的意思就是当程序在等待设备操作的时候,可以继续往下做而不必阻塞到那个地方等待设备操作的返回,这就造成了程序运行和设备操作时间上的重叠。 Overlapped I/O也称Asynchronous I/O,异步I/O模型。异步I/O和同步I/O不同,同步
阅读全文
摘要:总结:IOCP :我的打印文件放在店里面排队,轮到我打印了,店长帮我打印一下,打印好了通知我来拿 Epoll :我的打印文件放在店里面排队,轮到我叫我一下,我自己来打印。 直入正题:Epoll 是Linux系统下的模型;IOCP 是Windows下模型;Epoll 是当事件资源满足时发出可处理通知消
阅读全文
摘要:Overview 如今的应用程序越来越复杂,我们常常需要使用《异步编程:线程概述及使用》中提到的多线程技术来提高应用程序的响应速度。这时我们频繁的创建和销毁线程来让应用程序快速响应操作,这频繁的创建和销毁无疑会降低应用程序性能,我们可以引入缓存机制解决这个问题,此缓存机制需要解决如:缓存的大小问题、
阅读全文
摘要:案例如下的。我个人理解是不会出现出现0,0的结果,但是很明显出现了。 说明对我对 Volatile\内存屏障\乱序排序的理解是不对。 今天就通过这个案例,理清这些概念。 using System; using System.Threading; using System.Threading.Task
阅读全文
摘要:无序执行指令(Out-of-Order,简称OoO)模式允许CPU充分利用指令周期,避免由于某个指令延迟导致指令周期被浪费。在这种模式下,处理器根据输入数据的可用性来安排指令的执行顺序,而不是程序原先输入数据的顺序。通过这种执行顺序上的调整,处理器可以避免由于指令等待数据可用带来的空闲,转而执行数据
阅读全文
摘要:overview 同步基元分为用户模式和内核模式 用户模式:Iterlocked.Exchange(互锁)、SpinLocked(自旋锁)、易变构造(volatile关键字、volatile类、Thread.VolatitleRead|Thread.VolatitleWrite)、MemoryBar
阅读全文
摘要:在.NET Framework中,System.Convert类中提供了较为全面的各种类型、数值之间的转换功能。 其中的两个方法可以轻松的实现各种进制的数值间的转换: Convert.ToInt32(string value, int fromBase): 可以把不同进制数值的字符串转换为数字,其中
阅读全文