概要
并发编程解决的核心问题
并发编程可以抽象成三个主要问题:分工、协作和资源分配。
分工
高效地拆解任务,并分配给线程;
协作(同步)
当某个条件不满足时,线程需要等待,当某个条件满足时,线程需要被唤醒执行;
一个线程执行完了一个任务,如何通知执行后续任务的线程工作。
资源分配(互斥)
保证同一时刻只允许一个/部分线程访问共享资源;
核心问题的解决方案:
分工问题的解决方案:多线程;
协作问题,资源分配(互斥)问题的解决方案:管程;
并发编程可以抽象成三个主要问题:分工、协作和资源分配。
高效地拆解任务,并分配给线程;
当某个条件不满足时,线程需要等待,当某个条件满足时,线程需要被唤醒执行;
一个线程执行完了一个任务,如何通知执行后续任务的线程工作。
保证同一时刻只允许一个/部分线程访问共享资源;
分工问题的解决方案:多线程;
协作问题,资源分配(互斥)问题的解决方案:管程;