gsk's place

my love

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2010年12月13日

摘要: lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。 此语句的形式如下: 复制 Object thisLock = new Object();lock (thisLock){ // Critical code section.}lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程尝试进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。 lock 关键字在块的开始处调用 Enter,而在块的结尾处调用 Exit。 通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。 常见的结构 lock ( 阅读全文
posted @ 2010-12-13 15:45 gsk99 阅读(368) 评论(0) 推荐(0)

摘要: 一、栈和托管堆通用类型系统(CTS)区分两种基本类型:值类型和引用类型。它们之间的根本区别在于它们在内存中的存储方式。.NET使用两种不同的物理内存块来存储数据—栈和托管堆。如下图所示:值类型总是在内存中占用一个预定义的字节数(例如,int类型占4个字节,而string类型占用的字节数会根据字符串的长度不同而不同),当声明一个值类型变量时,会在栈中分配适当大小的内存(除了引用类型的值类型成员外,如类的int字段),内存中的这个空间用来存储变量所含的值。.NET维护一个栈指针,它包含栈中下一个可用内存空间的地址。当一个变量离开作用域时,栈指针向下移动被释放变量所占用的字节数,所以它仍指向下一个可 阅读全文
posted @ 2010-12-13 15:44 gsk99 阅读(683) 评论(1) 推荐(0)

摘要: string是引用类型;string str = null 没有创建内存空间,str中存放的是空引用指针;string str = "" 创建了内存空间,str中存放的是指向堆中的指针。简单地说:string str ="";给你一张白纸;string str = null;连白纸也没有。string.Empty就相当于""一般用于字符串的初始化比如:string a;Console.WriteLine(a);//这里会报错,因为没有初始化a而下面不会报错:string a=string.Empty;Console.WriteLine(a);或者用于比较:if(a=="")if(a==stri 阅读全文
posted @ 2010-12-13 15:37 gsk99 阅读(14742) 评论(2) 推荐(3)

摘要: 首先:两者都是按地址传递的,使用后都将改变原来参数的数值。其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。r... 阅读全文
posted @ 2010-12-13 15:36 gsk99 阅读(104810) 评论(16) 推荐(20)

摘要: 类是引用类型,是保存在托管堆中的。通过定义类,我们可以在数据的生存期上得到很高的灵活性,但是也会让程序的性能有一定的损失。虽然这种损失很小,但当我们只需要定义一个很小的结构时,用类来定义就有些浪费,对于这样的问题,C#有相对应的方案来解决,那就是-结构(struct)。 结构(struct)是一种值类型。也就是说,结构实例是分配在线程堆栈上的,结构本身是包含有值的,而不是像类一样的引用类型,包含的是所指向堆当中的引用(指针)。也就是说,结构的生存周期与简单类型(int,double等)相同的。所以说我们在定义较小的类时,可以尽量使用结构。 结构与类的区别:(1)结构是值类型,不是引用类型。(2 阅读全文
posted @ 2010-12-13 15:35 gsk99 阅读(8473) 评论(0) 推荐(0)

摘要: class和struct最本质的区别是class是引用类型,而struct是值类型,它们在内存中的分配情况有所区别。什么是class?class(类)是面向对象编程的基本概念,是一种自定义数据结构类型,通常包含字段、属性、方法、属性、构造函数、索引器、操作符等。在.NET中,所有的类都最终继承自Sy... 阅读全文
posted @ 2010-12-13 15:34 gsk99 阅读(53315) 评论(10) 推荐(12)

摘要: 在程序设计中,句柄是一种特殊的智能指针 。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。先来看些权威的片断: ... typedef unsigned int HANDLE; #define DECLARE_HANDLE(name) typedef UINT name DECLARE_HANDLE(HMODULE); DECLARE_HANDLE(HINSTANCE); DECLARE_HANDLE(HLOCAL); DECLARE_HANDLE(HGLOBAL); DECLARE_HANDLE(HDC); DECLARE_HANDLE(HRGN); 阅读全文
posted @ 2010-12-13 15:32 gsk99 阅读(1101) 评论(0) 推荐(0)

摘要: 应用程序域(application domain) (AppDomain)操作系统和运行库环境通常会在应用程序间提供某种形式的隔离。例如,Microsoft Windows使用进程来隔离应用程序。为确保在一个应用程序中运行的代码不会对其他不相关的应用程序产生不良影响,这种隔离是必需的。应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域通过作为应用程序状态的容器,使应用程序得以隔离。应用程序 阅读全文
posted @ 2010-12-13 15:32 gsk99 阅读(2181) 评论(0) 推荐(0)

摘要: socket非常类似于电话插座。以一个国家级电话网为例。电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址)。对方假如在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接 阅读全文
posted @ 2010-12-13 15:30 gsk99 阅读(993) 评论(0) 推荐(0)

摘要: 进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。这些进程可以运行在同一计算机上或网络连接的不同计算机上。 进程间通信技术包括消息传递、同步、共享内存和远程过程调用。 IPC是一种标准的Unix通信机制。有两种类型的进程间通信(IPC)。  本地过程调用(LPC)LPC用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信 阅读全文
posted @ 2010-12-13 15:27 gsk99 阅读(13430) 评论(0) 推荐(2)