进程、线程、纤程的区别

相信很多童鞋在面试的时候,面试官都会提这样的一个问题。

请你说说什么是进程,什么是线程,两者有什么区别?

很多童鞋遇到这样的提问可能会这样回答,进程就是一个程序运行起来的状态,而线程是一个进程中不同的执行路径,这种回答也没什么毛病,粗略的来说是对的,就是相对不够专业。

下面我们从专业的角度来做个回答

进程:进程是OS(操作系统)分配资源的基本单位。注:分配资源重要的一点是,分配了独立的内存空间

线程:线程是OS(操作系统)执行调度的基本单位。

进程和线程最重要的区别:线程共享进程的内存空间,线程没有自己独立的内存空间。

那什么是纤程呢,

纤程:纤程是用户态的线程,是线程中的线程,切换和调度不需要经过OS(操作系统)。

纤程的优势:1.占有的资源少,为什么说他占有资源少呢?举例:操作系统要启一个线程前后要为这个线程配的内存数据大概有          1M,而纤程大概是4K

                     2.由于纤程非常的轻量级,所以切换比较简单

                     3.可以同时被启动很多个(10万个都没问题)

目前支持内置纤程的语言Kotlin Scala Go 等,Java的正在开发中。。。。。

下面我就举个例子来证明一下,纤程先对于线程来说的优势,有兴趣的小伙伴可以试试

这是我们所需的依赖:

<?xml version=

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,进程线程和协程是实现并发编程的不同方式。 1. 进程(Process)是操作系统分配资源的基本单位,每个进程有独立的内存空间,互不干扰。进程之间的通信需要使用特定的机制,如管道、消息队列等。在Python中,可以使用`multiprocessing`模块创建和管理进程。 2. 线程(Thread)是进程内的独立执行流,一个进程可以包含多个线程,它们共享相同的内存空间。线程之间的通信比进程更方便,可以使用共享内存或者全局变量。然而,由于全局解释器锁(GIL)的存在,同一时间只有一个线程在执行Python字节码,因此多线程在CPU密集型任务中并不能提高性能。但是对于I/O密集型任务,多线程可以提升效率。Python内置的`threading`模块提供了对线程的支持。 3. 协程(Coroutine)是一种轻量级的线程,由程序控制在特定位置进行挂起和恢复的并发执行。协程能够在执行过程中被暂停和继续,并且可以通过yield语句进行交互式通信。Python中的协程通过生成器函数(generator function)和`asyncio`库来实现。 总结一下: - 进程是资源分配的基本单位,进程之间资源独立,通信复杂。 - 线程进程内的执行流,共享内存,通信相对方便,但受到GIL的限制。 - 协程是一种轻量级的线程,可以在特定位置挂起和恢复执行,并通过yield语句进行通信。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值