多任务处理
来源:互联网 发布:电脑雕刻软件 编辑:程序博客网 时间:2024/06/03 11:36
----------------------------------------------------------------
并行任务处理:并发,多cpu, 多进程, 多线程
----------------------------------------------------------------
操作系统能同时运行几个程序(独立运行的程序又称之为进程),
对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力。
进程和线程的概念的出现,对提高软件的并行性有着重要的意义。现在的大型应用软件无一不是多线程多任务处理
每个进程是由独立的虚拟地址空间、代码、数据和其它系统资源组成。进程在运行时创建的资源随着进程的终止而死亡。
线程的基本思想很简单,是进程内部的一个独立的执行单元,相当于一个子程序
单独一个执行程序运行时,缺省地包含的一个主线程,主线程以函数地址的形式出现,提供程序的启动点,
如main()或WinMain()函数等。当主线程终止时,进程也随之终止。根据实际需要,
应用程序可以分解成许多独立执行的线程,每个线程并行的运行在同一进程中。
一个进程中的所有线程都在该进程的虚拟地址空间中,使用该进程的全局变量和系统资源。
操作系统给每个线程分配不同的CPU时间片,在某一个时刻,CPU只执行一个时间片内的线程,
多个时间片中的相应线程在CPU内轮流执行,由于每个时间片时间很短,
所以对用户来说,仿佛各个线程在计算机中是并行处理的。
操作系统是根据线程的优先级来安排CPU的时间,优先级高的线程优先运行,优先级低的线程则继续等待。
并发处理带来的编程问题:
多cpu 竞争,多进程竞争,多线程竞争。
函数的重入性,对全局变量访问的互斥性。
多线程编程中要求函数具有重入性,
重入性要求函数不能采用全局变量。 若必须采用全局变量,需要用锁保护全部变量使用的正确性和原子性
mutex互斥信号量锁住的仅仅是一个变量,但它企图阻塞住一段程序, 保证这段程序的原子性。
这要求大家必须符合一定的规范,才能达到目的,例如锁的个数,时间要尽量少,多个锁不能死锁。
windows 下有enter_critical_section 函数调用
保证代码的原子执行。 意图重入的线程将会被阻塞与此。
并行任务处理:并发,多cpu, 多进程, 多线程
----------------------------------------------------------------
操作系统能同时运行几个程序(独立运行的程序又称之为进程),
对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力。
进程和线程的概念的出现,对提高软件的并行性有着重要的意义。现在的大型应用软件无一不是多线程多任务处理
每个进程是由独立的虚拟地址空间、代码、数据和其它系统资源组成。进程在运行时创建的资源随着进程的终止而死亡。
线程的基本思想很简单,是进程内部的一个独立的执行单元,相当于一个子程序
单独一个执行程序运行时,缺省地包含的一个主线程,主线程以函数地址的形式出现,提供程序的启动点,
如main()或WinMain()函数等。当主线程终止时,进程也随之终止。根据实际需要,
应用程序可以分解成许多独立执行的线程,每个线程并行的运行在同一进程中。
一个进程中的所有线程都在该进程的虚拟地址空间中,使用该进程的全局变量和系统资源。
操作系统给每个线程分配不同的CPU时间片,在某一个时刻,CPU只执行一个时间片内的线程,
多个时间片中的相应线程在CPU内轮流执行,由于每个时间片时间很短,
所以对用户来说,仿佛各个线程在计算机中是并行处理的。
操作系统是根据线程的优先级来安排CPU的时间,优先级高的线程优先运行,优先级低的线程则继续等待。
并发处理带来的编程问题:
多cpu 竞争,多进程竞争,多线程竞争。
函数的重入性,对全局变量访问的互斥性。
多线程编程中要求函数具有重入性,
重入性要求函数不能采用全局变量。 若必须采用全局变量,需要用锁保护全部变量使用的正确性和原子性
mutex互斥信号量锁住的仅仅是一个变量,但它企图阻塞住一段程序, 保证这段程序的原子性。
这要求大家必须符合一定的规范,才能达到目的,例如锁的个数,时间要尽量少,多个锁不能死锁。
windows 下有enter_critical_section 函数调用
保证代码的原子执行。 意图重入的线程将会被阻塞与此。
0 0
- 多任务处理:多线程
- 多任务处理
- 后台多任务处理
- task多任务处理
- iOS 后台任务处理(多任务)
- bat多任务并行处理
- Apache 多任务并发处理
- 多任务处理结构比较
- 多线程处理多个任务
- FileNet处理多人任务
- 抢占式多任务处理
- 抢占式多任务处理
- 多任务处理:服务器协议
- 多任务处理:线程池
- 多任务处理:关闭连接
- bat多任务并行处理
- iOS7的多任务处理
- iOS7的多任务处理
- sdk 无法更新或更新慢
- IOS反射机制的几个重要函数
- python strip()函数
- 利用rpm包手把手教你安装MySQL(MySQL-server-5.6.23 for CentOS6.5_64bit)
- spdy vs http + ocean
- 多任务处理
- 需求:ffmepg保存YUV数据到jpg文件
- QQ 的listView 是如何实现的?
- SQL Server 2000 之SQL语言编程内容提要之三SQL语言查询讨论提要之一
- Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果
- cuda实现字符统计
- C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。
- Ubuntu老版本停止更新换源无效-解决方法
- 浏览器请求 到 后台返回 的 编码