并发的程序

一 、程序的并发:
 1、单核的处理器并发不是真正意义上的并行执行多个程序,CPU只会一条一条的执行语句
 2、单核处理器的并发是CPU的一种调度策略,从逻辑和表面上看起来是并发执行。
 3、多核处理器能实现真正意义上的并发,
 4、所心就算是单核,但多线程多进程的执行,能够让CPU调度更多机会,让人觉得是在并发的执行,其实这也就是口中说的并发。
 5、从而处理器越多,程序的并发效率当然越高。
 6、程序的很多时候会有慢的地方,这时候CPU会停止执行它,去运行其它的程序,从而提高CPU的利用率,多线程多进程的执行同一个程序从而能够更加有效率的做一件事情。
      程序慢停顿的时机有很多 比如:等待用户的操作、数据库的访问、磁盘的访问、WEB请求服务等,都是慢动作,这时候CPU不可能等着做完之些才继续做其它的任务。

二、进程实现的并发
  在c中可通过fork创建子进程来为每一个请求服务
  优点:每个进程有自己的地址空间,控制简单方便。
  缺点:独立的地址空间让进程通讯麻烦,虽然可以通过其它方式进行通讯,但是效率上很慢。

三、线程
 1、线程是在进程中创建,每个线程有唯一ID,所有线程共享整个进程的所有数据
 2、每个线程有单独的栈,程序计数器,条件码等。
 3、线程由内核自动调用,内核通过线程的唯一ID来识别它。
 4、运行时CPU交替的在调用执行线程,CPU有相应的时间片分配策略
 5、线程之间是对待的关系 ,主线程不过是线程池当中第一个开启的线程而已,如main函数开启的主线程
 6、线程之间是可互相访问通讯,等待,关闭等,这样就能写出灵活的并发程序。
 7、多线程中,服务器在获取了客户的连接后,合理的在服务器开启线程去和相应的客户端通讯。
 8、多个线程的寄存器是独立的不能被其它线程所访问,栈是可以被访问的,不过通常不访问,容易引起错误。

 9、多线程的访问共享数据的同步,其实是对共享数据加信号量来进行同步,信号量的机制有P,V操作,P给共享数据加锁,V给共享数据解锁,对一个共享数据加了锁没

      解锁的线程就是占用了锁。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值