进程与线程的那些事


一、进程和线程

进程:进程是指系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。

线程:一个进程要想执行任务必须要有线程(每个进程至少要有一个线程)、线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行(多线程共享内存)。

比如打开网易云音乐是启动了一个进程,播放音乐是线程。

线程的串行:一个线程中的任务的执行时串行的,如果要在一个线程中执行多个任务,那么只能一个个按顺序执行这些任务,即在同一时间内,一个线程只能执行一个任务。

二、多线程

多线程:一个进程可以开启多条线程,每条线程可以并行(同时)执行不同的任务,多线程技术可以提高程序的执行效率。

多线程原理:同一时间,CPU只能处理1条线程,只有一条线程在工作(执行),多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换),如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象。(缺点:CPU在N多条线程之间调度,CPU会累死,消耗大量的CPU资源,每条线程被调度执行的频次会降低(线程的执行效率降低))。

多线程优点:能适当提高程序的执行效率,能适当提高CPU利用率。

多线程缺点:开启线程需要占用一定的内存空间(默认情况下,主线程占用1M,子线程占用512KB),如果开启大量线程,会占用大量的内存空间,降低程序的性能。线程越多,CPU在调度线程上的开销就越大,程序设计越复杂,比如线程之间的通信、多线程的数据共享。

多线程的安全隐患:资源共享

1块资源可能会被多个线程共享,也就是多个线程可能会访问同一资源,比如多线程访问同一个对象、同一个变量、同一个文件、当多线程访问同一资源时,很容易引发数据错乱和数据安全问题。例如银行存取钱,车站售票。

解决方案:互斥锁

当多条线程抢夺同一块资源可以使用互斥锁,互斥锁能有效防止因多线程抢占资源造成的数据安全问题,但需要消耗大量的CPU资源。互斥锁是利用线程同步技术,多条线程按顺序执行任务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,172评论 0 23
  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 1,793评论 0 17
  • 一、进程和线程 进程 进程就是一个执行中的程序实例,每个进程都有自己独立的一块内存空间,一个进程中可以有多个线程。...
    阿敏其人阅读 2,622评论 0 13
  • 进程 1:进程是指在系统中正在运行的一个应用程序,进程是程序在计算机上的一次执行活动。 2:每个进程之间是相互独立...
    没有梦想_何必远方阅读 881评论 0 3
  • 图文/无为跑者 有菜众熟唤作韭, 低矮镰过几无留。 有朝一日含苞放, 人前人后不出糗。
    最家游阅读 604评论 6 13