您当前的位置: 首页 > 

我什么都布吉岛

暂无认证

  • 2浏览

    0关注

    292博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

进程、线程、并发和并行概念

我什么都布吉岛 发布时间:2019-02-28 17:46:51 ,浏览量:2

一、进程和线程

进程是一个运行起来的可执行程序。进程有三种状态:

  • 就绪 进程获得了除了CPU外所有必要资源
  • 运行 进程获得了所有资源,开始执行
  • 阻塞 进程正在尚未满足要求,正在等待

线程是程序执行流的最小单位(要执行,最起码是一个线程)

二、线程和进程的联系和线程一些常识 2.1 线程和进程之间的联系
  • 进程必有唯一的主线程
  • 进程和主线程同时创建同时结束
  • 线程切换要比进程切换要快
2.2 线程的几点常识
  • 线程不是越多越好(200-300最佳)
  • 线程需要独立的堆栈空间,但没有自己独立地址
  • 线程切换比进程切换要快

线程需要独立的堆栈空间用于切换时的中间状态。进程的资源特点是共享的,而进程则是独立。

具体地,线程拥有以下资源[1]:

  • 栈空间(也就是自己的局部变量)
  • 全局变量(包括静态)
  • 文件描述符
  • 信号处理函数
  • 当前目录状态

相对于进程而言,进程拥有独立的变量空间和PID,如果需要交换变量,需要采用IPC技术。

三、并发和并行 3.1 并发

并发是多个执行主体需要去做一件事情,但是资源只有一个。它需要解决的问题是竞争和同步的问题。

3.2 并行

并行是多个执行主体需要去做一件事情,每个执行主体各自拥有自己的资源。它们之间互不干扰。

四、并发的实现方法 4.1 多个进程实现并发

对于同一个电脑,可以通过管道、文件、消息队列和共享内存实现。对于不同电脑:用socket通信技术实现

4.2 多个线程实现并发

线程之间共享数据,通信简单,系统开销小。但是它带了数据需要同步的问题。

五、C++11线程库实现并发

不同系统的线程创建都不一样,跨平台不方便,虽然有POSIX thread(pthread),但是还是需要配置。C++11标准解决了这个问题。

[1] 马修, N. ), 斯通斯,等. Linux程序设计: 第4版[M]. 人民邮电出版社, 2010.

20201031 对线程具体共享的资源进行了说明。

关注
打赏
1658157489
查看更多评论
立即登录/注册

微信扫码登录

0.0429s