多线程之进程与线程的理解

       尊重原创,转载请注明出处:http://blog.csdn.net/byperseverance/article/details/44046449

        其实早就接触多线程编程了,但是要回答进程和线程的定义及区别,我还真一时答不了多少。我知道一个应用程序由一个进程或多个进程组成,一个进程可以包含多个线程,但至少包含一个线程。进程之间的空间是独立的,一个进程内多个线程共享内存空间的。仅仅只是这些吗?我对自己也要说呵呵了,还是多找些资料吧。

       进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

      有没有更通俗的说法呢? 拿我们电脑上的记事本来举例,如果我们需要做一个记事本的软件,首先需要的是写代码,然后编译成可执行文件,这个过程对我们来说就是写程序。那程序的概念就完成某些特定目标或解决特定问题的一些命令序列的集合,当然这些命令就是我们用各种编程语言写出的代码通过对应的编译器转化过的机器指令。程序在windows上的表现就是一个EXE,当我们双击某个程序的时候,程序一运行,进程就产生了。哦,进程就是一个正在运行的程序。

       记事本有一个保存功能,而在保存的时候硬盘刚好在干别的事情,处于阻塞状态,那么我点保存的时候,软件就处于一种卡死的状态,我没法进行编辑了。对于用户来说这种体验非常差了,那么多线程就派上用场了。我一个线程用来编辑文本,一个用来保存,当保存的线程阻塞时,并不会影响编辑。那么线程就是进程里面单一的独立处理流程。

       这下明白什么是进程和线程了吧。


       再看一下区别,其实我个人认为进程和线程不存在区别之说,因为根本就不是一个并行关系,就好像人和男人有什么区别一样。我更倾向于说是线程跟进程的关系:

       1,先从文章第二段说起,进程是系统进行资源分配和调度的一个独立单位.线程是CPU调度和分派的基本单位。前一句表述的就是操作系统资源的分配,多个进程有独立的地址空间,而线程作为进程的子集,它们没有独立的地址空间,全是共用父进程的地址空间。后一句强调的是调度和分派的基本单位是线程,我们可以说多任务操作系统是以进程来管理,以线程来调度的。

      2,每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

      3,一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行


在学习linux的时候需要注意,Linux内核并没有线程这个概念,这就是为什么大家在看linux系统调度的时候,基本不会看到线程这个词。但linux是支持多线程的,它是通过一个概念(轻进程)来实现的。也就是linux下的线程就是一个轻量级的进程。

     想更深入了解线程的管理请进:http://blog.csdn.net/byperseverance/article/details/44157041



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值