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

概念进程是计算机上的一次执行活动,是程序的一次动态执行过程,是操作系统进行资源分配的单位,当运行一个程序就启动一个进程。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 方法   结束线程运行

  

时间: 2024-07-31 08:41:00

进程与多线程、死锁初步理解的相关文章

多线程的初步理解

浅谈对多线程的理解    1.什么是进程和什么又是线程???        进程是指运行中的应用程序,每个进程都有自己独立的地址空间:        线程是进程中执行运算的最小单位,一个进程中可以有多个线程.    2.多线程的集中实现方式        (1):继承thread类,thread类本质上还是实现了runnable接口的一个实例,启动线程的唯一方法就是通过thread类的start()方法,启动一个新的线程并执行run()方法,可以重写run()方法来实现自己定义的方法.     

线程与进程的区别以及对多线程并发的理解

转自: http://blog.sina.com.cn/s/blog_12f5264ff0102v8eq.html http://blog.csdn.net/suxinpingtao51/article/details/8113509 http://blog.csdn.net/cqkxboy168/article/details/9026205/ 一.线程与进程的区别 先简单说说线程与进程的概念: (1)进程是指一个内存中运行的应用程序,比如在Windows系统中,一个运行的exe就是一个进程.

java 多线程死锁问题

什么是死锁 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 死锁产生的原因及条件 那么为什么会产生死锁呢? 1.因为系统资源不足. 2.进程运行推进的顺序不合适. 3.资源分配不当. 学过操作系统的朋友都知道:产生死锁的条件有四个: 1.互斥条件:所谓互斥就是进程在某一时间内独占资源. 2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放. 3.不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺

线程、进程、多线程、多进程

http://blog.csdn.net/lishenglong666/article/details/8557215 线程进程的联系和区别 定义: 进程是程序在计算机上的一次执行活动,是系统进行资源分配和调度的一个独立单位:  线程是进程的一个实体,是cpu调度和分派的基本单位,他是比进程更小的能独立运行的基本单位:线程自己基本上不拥有系统资源,只用有点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程可以创建和撤销另一个线程: 线程与进程的关系: 1)     一个线程只能属于

初步理解socket

近期研究下socket,发现自己还是有非常多不明确的地方,索性沉下心来,从最基础開始学习,開始看起,如今对自己的学习做下小小总结,以便和大家分享,如有谬误,敬请指正. 原创文章,转载请注明出处:http://blog.csdn.net/jessonlv TCP/IP 在学习socket之前,先回想下TCP/IP协议. TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机怎样连入因特网及数据怎样再它们之间

iOS多线程的初步研究(四)-- NSTimer

 iOS多线程的初步研究(四)-- NSTimer 原文地址  http://www.cnblogs.com/sunfrog/p/3243230.html 理解run loop后,才能彻底理解NSTimer的实现原理,也就是说NSTimer实际上依赖run loop实现的. 先看看NSTimer的两个常用方法: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelec

【操作系统】死锁的理解

[操作系统]死锁的理解 2017-05-08 若愚 今天分享给大家操作系统中死锁的相关概念和解决办法,内容来自与自己当时做的笔记和网络~有问题可以后台回复,会尽量回答哦 一.死锁的概念 当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁. 在操作系统中,死锁指的是在多任务的系统中,一个或者多个进程因为请求系统的资源而暂停,而该资源又被其他进程或者自己占用,这样形成的僵持的状态就是死锁. 比如,进程A占有打印机资源,请求音响资源,进程B占用音响但是请

[转] 多线程死锁调试小技巧

据说再高的高手在写多线程程序的时候都难确保不会产生死锁,死锁的调试也就成为一个比较常见的问题,假设有下面这样一个问题: 一个正在生产环境下运行的进程死锁了,或者你只是在跑一个程序,并没有在调试器里面打开它,然后发现没有响应,日志 输出也停止了.由于你是一个有经验的程序员,会想到“我刚刚加上了新的锁策略,不一定稳定,这可能是死锁了“.但是你不想就这么杀掉进程,因为多线程的 bug 不容易重现,遇上一次死锁可能要凭运气,错过了这次,它下次死锁可能会出现在你演示给老板看的时候……怎么办? 对于这样的问

进程 线程 多线程 并发 同步异步

进程 线程 多线程 并发 同步异步 很多人对进程,线程,多线程,并发,同步,异步等概念感到困惑,这都是大学没好好听课的缘故啊.咱在这里帮感到概念给感到困惑的同学复习下. 程序 程序用来描述计算机所完成的独立功能,并在时间上严格地按前后次序相继地进行计算机操作序列集合,是一个静态概念. 进程 并发执行的程序在执行过程中分配和管理资源的基本单位.是一个动态的执行过程. 进程的静态描述 进程控制块PCB 有关程序段 该程序员对齐进行操作的数据结构集 进程控制块PCB 进程控制块PCB是系统管制进程存在