当前位置: 首页 > wzjs >正文

深圳网站建设公司jsp电子商务与网络营销教案

深圳网站建设公司jsp,电子商务与网络营销教案,江苏网络公司网站建设,做美食网站的素材1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…

1. 线程与协程

1.1. “函数调用级别”的切换、上下文切换

1. 函数调用级别的切换

“函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。

举例说明:

当你在程序中写一个函数调用:

funcA()

然后 funcA 执行完后返回,CPU 不需要保存太多额外的信息,只是:

  • 压栈/出栈(保存调用点、局部变量等)
  • 跳转指令地址(比如函数返回到调用者)

这种切换就是非常轻量级的,发生在用户态,速度快、成本低。

协程之间的切换通常只涉及「函数调用级别」的保存和恢复,例如程序计数器(PC)、栈指针(SP)等。

 

2. 上下文切换

上下文切换是操作系统在多任务之间切换时保存和恢复执行状态的过程,通常发生在线程/进程之间。

典型上下文包含:

  • CPU 寄存器(程序计数器 PC、堆栈指针 SP、通用寄存器)
  • 内存映射 / 虚拟地址空间(尤其是进程间)
  • 线程/进程控制块(如 PCB/TCB)

上下文切换的代价大:

  1. 保存当前线程的寄存器、状态
  2. 切换到内核态(Trap)
  3. 操作系统调度另一个线程/进程
  4. 恢复新线程的上下文
  5. 切换回用户态,继续执行

这会消耗 CPU 时间、内存带宽和系统资源,频繁切换会严重影响性能。

对比总结

项目

协程切换(函数调用级别)

线程/进程切换(上下文切换)

切换方式

用户态,像调用函数一样

操作系统调度,涉及内核态

状态保存/恢复

少量(程序计数器、栈指针)

全部寄存器、堆栈、内存映射等

是否切内核态

是(陷入内核)

开销

极小

较大(系统调用 + 状态切换)

性能影响

轻微

明显(频繁切换容易降低性能)

1.2. 线程(Thread)

概念:

线程是操作系统调度的最小单位,一个线程对应一条执行路径。多个线程可以并发执行任务,从而提升程序的响应性和性能。

特点:

  • 每个线程有自己的堆栈空间和程序计数器
  • 多个线程共享进程内的资源(如内存、文件);
  • 线程之间切换需要操作系统调度,代价较高(上下文切换)
  • 在多核 CPU 下,线程可以实现真正的并行(每核跑一个线程);
  • 适合 I/O 密集和 CPU 密集场景,但创建和调度较重。

举例(Python 中):

import threadingdef task():print("线程正在运行")t = threading.Thread(target=task)
t.start()

1.3. 协程(Coroutine)

概念:

协程是一种用户态的轻量级线程,又叫微线程,不由操作系统调度,而是由程序自己控制何时挂起、何时恢复

特点:

  • 本质是单线程内的并发;
  • 用于I/O 密集型任务非常高效(如网络请求、文件读写);
  • 切换开销小,不需要线程上下文切换;
  • 依靠语言或框架调度(如 Python 的 asyncio、Go 的 goroutine);
  • 不适合 CPU 密集任务(因为不能并行运算)。

举例(Python asyncio):

import asyncioasync def task():print("协程正在运行")await asyncio.sleep(1)print("协程运行结束")asyncio.run(task())

1.4. 线程 vs 协程对比总结

对比点

线程(Thread)

协程(Coroutine)

调度方式

操作系统调度

程序主动让出控制权(如 await

是否并发/并行

可实现并发,也可在多核并行

仅并发,不并行(除非多线程协程)

切换开销

大(上下文切换、内核态)

小(用户态)

编程复杂度

中等(注意锁、共享数据)

简单(适合异步 I/O)

适用场景

CPU 密集、I/O 密集

高并发 I/O 密集(如爬虫、Web服务)

Python 举例

threading模块

asyncio, trio, FastAPI

 

什么时候选线程?什么时候选协程?

场景

推荐使用

理由

文件读写、数据库操作

协程(asyncio)

I/O 密集、无需上下文切换、轻量高效

网络服务(如爬虫、Web)

协程(asyncio)

可处理成千上万连接,资源开销低

CPU 密集型计算

多线程 / 多进程

协程无优势,应考虑并行处理能力

简单并发

线程即可

写法直观,不涉及复杂 async/await

 

http://www.dtcms.com/wzjs/120418.html

相关文章:

  • 电商网站设计模板seo网络推广什么意思
  • 用php做医药网站开题报告朋友圈信息流广告投放价格
  • 高端美食网站建设我想做个网站怎么做
  • 免费网站404免费进入百度广告开户
  • 订单拆单在电商网站建设北京seo公司哪家好
  • 网站开发多少工资网站制作
  • 企业服务网站建设今日军事新闻报道
  • 手机做任务网站有哪些内容广州seo优化公司
  • 有自己的网站做淘宝联盟号做吗2023年适合小学生的新闻有哪些
  • 设计手机网站内容模块市场营销策划
  • 512内存服务器做网站什么是互联网营销师
  • 浏览器微信登录入口四川seo整站优化吧
  • 腾讯学生服务器做网站广东东莞最新情况
  • 怎么样才能把网站关键词做有排名网络推广公司名字
  • 淄博做网站的2022拉新推广赚钱的app
  • 自己怎么做网站赚钱吗百度广告服务商
  • 网站建设 长春百度账号管理
  • 网上那么多色图网站怎么做的南昌seo搜索优化
  • 网站设计模版最新搜索引擎排名
  • 三维家软件培训班论坛seo招聘
  • ubuntu服务器做网站搜索引擎营销的过程
  • 网站建设英文怎么说营销软文
  • 必应网站收录提交入口产品市场推广计划书
  • 哪些网站容易做代写企业软文
  • 哪些公司用.cc做网站谁有推荐的网址
  • 大气网站模板下载网络营销的含义的理解
  • 天津智能网站建设制作sem竞价推广是什么意思
  • 公司网站被黑有不良信息 做笔录新闻式软文经典案例
  • 海南响应式网站建设方案游戏广告推广平台
  • 宝山网站推广长沙谷歌优化