线程、进程、协程/微线程

本文详细介绍了并发处理的三种方式:多进程、多线程和IO多路复用,并重点讲解了进程和线程的区别与联系,以及协程的概念和优势。通过示例展示了如何使用协程实现生产者-消费者模型,强调了协程在执行效率和同步机制上的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 并发的方式

并发处理是同一时间段内有几个程序都在一个cpu中处于运行状态,但任一时刻只有一个程序在cpu上运行。

多进程、多线程、IO多路复用(通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。如select、poll、epoll)

  • 进程

        资源分配的基本单位,

        Linux系统函数fork()可在父进程中创建一个子进程,在父进程接到新请求时,复制出一个子进程来处理,即父进程监控请求,子进程处理,实现并发处理。注意:必须是Linux系统,windows不能用fork。

  • 进程的几种状态

(1)run(运行状态):正在运行的进程或在等待队列中等待的进程,等待的进程只要以得到cpu就可以运行

(2)Sleep(可中断休眠状态):相当于阻塞或在等待的状态

(3)D(不可中断休眠状态):在磁盘上的进程

(4)T(停止状态):这中状态无法直观的看见,因为是进程停止后就释放了资源,所以不会留在linux中

(5)Z(僵尸状态):子进程先与父进程结束,但父进程没有调用wait或waitpid来回收子进程的资源,所以子进程就成了僵尸进程,如果父进程结束后任然没有回收子进程的资源,那么1号进程将回收

  • 线程

      CPU调度和分配的基本单位,程序执行的最小单位。

       在同一时间片只能有一个线程针对一个cpu执行指令,而且其他的线程必须被挂起。然后内核调度程序不断的唤醒/挂起线程来模拟多个任务的执行。

      一个进程可以由很多个线程组成,线程间共享进程的所有资源。线程有自己的堆栈、局部变量。

      线程的创建调用pthread_create

      线程中执行时一般都要进行同步和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值