多任务处理

----------------------------------------------------------------
并行任务处理:并发,多cpu, 多进程, 多线程
----------------------------------------------------------------

操作系统能同时运行几个程序(独立运行的程序又称之为进程),
对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力。
进程和线程的概念的出现,对提高软件的并行性有着重要的意义。现在的大型应用软件无一不是多线程多任务处理

每个进程是由独立的虚拟地址空间、代码、数据和其它系统资源组成。进程在运行时创建的资源随着进程的终止而死亡。
线程的基本思想很简单,是进程内部的一个独立的执行单元,相当于一个子程序
单独一个执行程序运行时,缺省地包含的一个主线程,主线程以函数地址的形式出现,提供程序的启动点,
如main()或WinMain()函数等。当主线程终止时,进程也随之终止。根据实际需要,
应用程序可以分解成许多独立执行的线程,每个线程并行的运行在同一进程中。

一个进程中的所有线程都在该进程的虚拟地址空间中,使用该进程的全局变量和系统资源。
操作系统给每个线程分配不同的CPU时间片,在某一个时刻,CPU只执行一个时间片内的线程,
多个时间片中的相应线程在CPU内轮流执行,由于每个时间片时间很短,
所以对用户来说,仿佛各个线程在计算机中是并行处理的。
操作系统是根据线程的优先级来安排CPU的时间,优先级高的线程优先运行,优先级低的线程则继续等待。

并发处理带来的编程问题:
多cpu 竞争,多进程竞争,多线程竞争。

函数的重入性,对全局变量访问的互斥性。

多线程编程中要求函数具有重入性,
重入性要求函数不能采用全局变量。 若必须采用全局变量,需要用锁保护全部变量使用的正确性和原子性
mutex互斥信号量是内核级别的全局信号量,得不到锁信号,程序将阻塞于此。

上锁时间要尽量少,多个锁不能死锁。
windows 下有enter_critical_section 函数调用
保证代码的原子执行。 意图重入的线程将会被阻塞与此。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值