【C++并发与多线程】 1_并发基本概念及实现,进程、线程基本概念

并发、进程、线程的基本概念和综述

并发

  • 两个或者更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务。
  • 以往计算机为单核CPU(中央处理器):某一时刻只能执行一个任务,由操作系统调度,每秒钟进行多次“任务切换”,这并不是真正的并发。同时任务切换需要保存与恢复任务上下文,存在时间开销。
  • 随着硬件发展,出现了多处理器(多核)计算机,能够实现真正的并行任务处理(硬件并发)。
  • 使用并发的原因:可以同时处理多个任务,提高处理性能。

001.png

可执行程序

  • 磁盘上的一个文件:

    • window : .exe
    • linux :具有可执行属性的文件 (-x)

进程

  • 运行一个可执行程序得到进程。进程是操作系统资源分配的基本单位。

线程

  • 每个进程都有一个唯一的主线程。
  • 进程被创建时,主线程启动执行 main 函数。
  • 线程中可以继续创建其它非主线程。
  • 线程是操作系统调度的基本单位。

002.png

学习心得

  • 开发多线程程序是商用的必须需求。
  • 线程开发有一定难度。
  • C++线程会设计到很多新的概念。
  • 网络通讯、网络服务中多线程是一定会被用到的。

并发的实现方法

  • 通过多个进程实现并发。
  • 在单独的进程中,写代码创建除了主线程之外的其它线程实现并发。

003.png

多进程并发

  • 例:启动word和网页浏览器同时处理不同任务。
  • 进程之间的通讯方式

    • 同一电脑:管道、文件、消息队列、共享内存、socket通讯
    • 不同电脑:socket 通讯

多线程并发

  • 每个线程可有自己独立的运行路径
  • 同一进程中所有线程共享地址空间(共享内存)。全局变量、指针、引用等可以在线程之间传递,通讯开销远远小于进程。
  • 线程并不是越多越好,线程需要独立的堆栈空间,同时线程切换时会消耗执行时间。

总结

  • 多进程并发和多线程并发可以混合使用,但建议优先考虑多线程技术。

C++11 新标准线程库

  • 经典开发方式

    • indow: CreateThread(), _beginthread(),_beginthreadexe()
    • linux : pthread_create();
    • posix thread (跨平台,需要最基础配置)
  • C++11及后续

    • 语言层面支持多线程,意味着可跨平台,减少开发人员工作两。

你可能感兴趣的:(c++后端)