码迷,mamicode.com
首页 > 其他好文 > 详细

并发编程(一)

时间:2018-06-02 16:42:22      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:封装   多线程   创建线程   优点   资源   分布   多线程并发   task   那是   

一 、多进程并发和多线程并发

  多进程并发有进程间通信机制,更加安全。第一个缺点:进程间通信为避免一个进程修改另一个进程,比如读时共享写时复制使得花销更大;第二个缺点:需要启动进程,还要系统内核来管理进程,因为C++ 没有对进程提供任何封装。

  但是进程相对独立,可以分布式运行在独立的机器上,算是一个优点。

  多线程共享内存,但是程序员要确保访问到的数据线程一致性。

二、并发的意义

  分离关注点和提高性能。

  1、 分离关注点:就想QT里面将图像处理函数交给线程,主控线程关注用户输入,等待接收线程返回。防止页面卡死。

 2、 提高性能:那是肯定。

  两种方式利用并发提高性能:

   第一,将一个单个任务分成几部分,且各自并行运行,从而降低总运行时间。这就是任务并行(task parallelism)。虽然这听起来很直观,但它是一个相当复杂的过程,因为在各个部分之间可能存在着依赖。区别可能是在过程方面:一个线程执行算法的一部分,而另一个线程执行算法的另一个部分或是在数据方面;不是所有算法都是易并行算法。

 第二,每个线程在不同的数据部分上执行相同的操作,对数据的并行处理,称为数据并行。

 但是,创建线程,线程要独立的栈空间,创建太多线程会消耗操作系统资源。一般每个线程会有10MB空间。每个进程4G也只能有4096个,此时其他3区将没有任何空间,而且堆的要求空间远远大于栈。可以使用线程池技术,但是线程池创建也是一个动态的管理技术,也要占用资源。所以,小任务不要用线程,也不要创建太多线程。

并发编程(一)

标签:封装   多线程   创建线程   优点   资源   分布   多线程并发   task   那是   

原文地址:https://www.cnblogs.com/huangfuyuan/p/9125582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!