标签:封装 多线程 创建线程 优点 资源 分布 多线程并发 task 那是
一 、多进程并发和多线程并发
多进程并发有进程间通信机制,更加安全。第一个缺点:进程间通信为避免一个进程修改另一个进程,比如读时共享写时复制使得花销更大;第二个缺点:需要启动进程,还要系统内核来管理进程,因为C++ 没有对进程提供任何封装。
但是进程相对独立,可以分布式运行在独立的机器上,算是一个优点。
多线程共享内存,但是程序员要确保访问到的数据线程一致性。
二、并发的意义
分离关注点和提高性能。
1、 分离关注点:就想QT里面将图像处理函数交给线程,主控线程关注用户输入,等待接收线程返回。防止页面卡死。
2、 提高性能:那是肯定。
两种方式利用并发提高性能:
第一,将一个单个任务分成几部分,且各自并行运行,从而降低总运行时间。这就是任务并行(task parallelism)。虽然这听起来很直观,但它是一个相当复杂的过程,因为在各个部分之间可能存在着依赖。区别可能是在过程方面:一个线程执行算法的一部分,而另一个线程执行算法的另一个部分或是在数据方面;不是所有算法都是易并行算法。
第二,每个线程在不同的数据部分上执行相同的操作,对数据的并行处理,称为数据并行。
但是,创建线程,线程要独立的栈空间,创建太多线程会消耗操作系统资源。一般每个线程会有10MB空间。每个进程4G也只能有4096个,此时其他3区将没有任何空间,而且堆的要求空间远远大于栈。可以使用线程池技术,但是线程池创建也是一个动态的管理技术,也要占用资源。所以,小任务不要用线程,也不要创建太多线程。
标签:封装 多线程 创建线程 优点 资源 分布 多线程并发 task 那是
原文地址:https://www.cnblogs.com/huangfuyuan/p/9125582.html