进程与多线程、死锁初步理解

11/25/2015来源:ASP.NET技巧人气:1485

概念进程是计算机上的一次执行活动,是程序的一次动态执行过程,是操作系统进行资源分配的单位,当运行一个程序就启动一个进程。PRocess可以访问本地或远程计算机上的进程,并且可以启动和终止本地系统中的进程(System.Diagnostics)

线程是操作系统分配处理器时间的基本单元,是多个操作系统看起来像同时发生(System.Threading)

  多线程优点:1.用户界面响应时还可做后台操作 2.按优先级执行任务 3.通过网络连接到web服务器或数据库

  多线程缺点:1.加重系统的负荷可能会导致性能降低 2.控制多线程的代码比较难,可能导致很多bug

多线程:线程是指程序中的一个单一的顺序控制流,线程是进程中的实体。一个进程可以拥有多个线程,一个线程必须有一个父线程。线程不拥有系统资源,只有运行必须的一些数据结构。它与父线程的其他线程共享该进程所拥有的全部资源。线程可以创建撤销,从而实现程序的并发执行

死锁:死锁是指使用共享资源的两个或多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。

实例

启动线程:

  构造方法用 ThreadStart 代理作为参数;ThreadStart 指向的方法将在线程中执行;线程是通过Start方法来启动
  Thread t = new Thread(new ThreadStart(MyClass.AStaticMethod));
  t.Start();
线程的属性和参数:

  Thread.Name获取或设置线程名;Thread.Priority获取或设置线程优先级;Thread.IsBackground线程是否可在后台运行
管理线程:
  Thread.Sleep 阻塞当前线程 Thread.Sleep(3000); // blocks for 3 seconds

  Suspend和Resume并不常用可能导致死锁等应用程序的严重问题

  Thread.Join 等待其它线程停止 t.Join(); // Wait for the thread to exit
  Thread.WaitHandle 等待一个或多个事件 WaitHandle.WaitAll(waitEvents);

  Thread.ThreadState 属性——线程状态

中断和结束线程:

  Thread.Interrupt 方法 中断处于执行状态的线程 ;Thread.Abort 方法   结束线程运行