乐趣区

关于c++:C并发与多线程-1并发基本概念及实现进程线程基本概念

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

并发

  • 两个或者更多的工作(独立的流动)同时产生(进行):一个程序同时执行多个独立的工作。
  • 以往计算机为单核 CPU(中央处理器):某一时刻只能执行一个工作,由操作系统调度,每秒钟进行屡次“工作切换”,这并不是真正的并发。同时工作切换须要保留与复原工作上下文,存在工夫开销。
  • 随着硬件倒退,呈现了多处理器(多核)计算机,可能实现真正的并行任务解决(硬件并发)。
  • 应用并发的起因:能够同时解决多个工作,进步解决性能。

可执行程序

  • 磁盘上的一个文件:

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

过程

  • 运行一个可执行程序失去过程。过程是操作系统资源分配的根本单位。

线程

  • 每个过程都有一个惟一的主线程。
  • 过程被创立时,主线程启动执行 main 函数。
  • 线程中能够持续创立其它非主线程。
  • 线程是操作系统调度的根本单位。

学习心得

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

并发的实现办法

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

多过程并发

  • 例:启动 word 和网页浏览器同时解决不同工作。
  • 过程之间的通信形式

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

多线程并发

  • 每个线程可有本人独立的运行门路
  • 同一过程中所有线程共享地址空间(共享内存)。全局变量、指针、援用等能够在线程之间传递,通信开销远远小于过程。
  • 线程并不是越多越好,线程须要独立的堆栈空间,同时线程切换时会耗费执行工夫。

总结

  • 多过程并发和多线程并发能够混合应用,但倡议优先思考多线程技术。

C++11 新规范线程库

  • 经典开发方式

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

    • 语言层面反对多线程,意味着可跨平台,缩小开发人员工作两。
退出移动版