并发编程基础

1.并发编程的优缺点

优点

充分利用了多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到了极致(因为在一个线程中,还有等待输入等操作),性能得到提升

缺点

并发编程的目的就是为了提高程序的执行效率,提高程序运行速度,但是并发编程并不总是能提高程序运行速度的,而且并发编程可能会遇到比如:内存泄漏、上下文切换、线程安全、死锁等问题

2.并发编程的三要素是什么

并发编程的三要素:

  • 原子性:原子性指的是要么一个或多个操作全部执行成功,要么全部执行失败,是一个不可分割的整体,具体到计算机,就是cpu不可以在中途暂停然后再调度,要不就执行完成,要不就不执行
  • 可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到,可见性表示的是如果有线程更新了某一个共享变量的值,则其他线程要能够立即感知到最新的内容
  • 有序性:程序执行的顺序按照代码的先后顺序执行

出现线程安全问题的原因:

  • 线程切换带来的原子性问题:因为在多线程情况下,线程的切换可能会导致某个操作的原子性遭到破坏
  • 缓存导致的可见性
  • 编译优化带来的有序性问题

3.什么是多线程,以及多线程的优劣势

多线程的定义:
多线程是指程序中包含多个执行流,即一个程序中可以同时运行多个不同的线程来执行不同的任务

多线程的优势
可以提高CPU的利用率。在多线程的程序中,一个线程必须等待的时候,CPU可以运行其他的线程而不是让CPU进行空转,这样就大大提高了程序的执行效率

多线程的劣势

  • 线程也是程序,所以线程需要占用内存,线程越多占用的内存越多
  • 多线程之间对共享资源的访问会相互影响,会造成共享资源的竞争问题

4.进程和线程的区别

  • 根本区别进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
  • 资源开销:进程之间的切换会有较大的开销,线程之间的切换开销比较小
  • 包含关系:一个进程可以包含多个线程,线程又称为轻量级进程
  • 内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的
  • 影响关系:一个进程崩溃之后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃之后,整个进程都崩溃(原子性问题),所以多进程要比多线程强壮
  • 执行过程每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值