2 3 4

ch4 threads

overview


通常一个进程一个线程,若一个进程包含多个线程,它可用执行多个任务(若使用多个进程,进程创建耗费多余时间与资源


Multicore Programming


并行性与并发性

Multithreading Models



Many-to-One

One-to-One

Many-to-Many

Two-Level Model


Thread Libraries*线程库)


为程序员提供创建和管理线程的API

Pthreads(POSIX标准定义的线程创建与同步API




Implicit Threading

  • Thread
    Pools(线程池)

Threading Issues

Semantics(语义) of fork() and exec()


exec()指定的程序取代整个进程,包括所有线程

Thread Cancellation(线程撤销)

  • 异步撤销:立刻终止目标线程
  • 延迟撤销:给它“自杀”机会(在应该死的时候)
    这是因为需要撤销的线程可能正在更新与其他线程共享的数据,直接撤销可能会很困难

Signal Handling(信号处理)

信号用于通知进程某个特定事件已经发生

Thread-Local Storage(线程本地存储)

Scheduler Activations(调度程序激活)


许多系统在实现多对多或者双层模型时,在用户和内核线程之间增加一个中间数据结构--轻量级进程(LWP)
LWP对于用户级线程库,表现为虚拟处理器,以便应用程序调度并运行用户线程。每个LWP与一个内核线程相连,只有内核线程才能通过操作系统调度以便运行于物理处理器。如果内核线程阻塞,LWP也会阻塞,对应的用户级线程也会阻塞
通常,每个并发的、阻塞的系统调用需要一个LWP
当一个应用程序线程要阻塞时,一个触发回调(upcall)事件发生(回调就是内核将有关特点事件通知应用程序),内核通知应用程序它有一个线程将会阻塞并标识特定线程,内核分配一个新的虚拟处理器(LWP)给应用程序,应用程序在虚拟处理器上运行回调处理程序,保存阻塞线程状态,并释放阻塞线程运行的虚拟处理器。当阻塞线程等待的事件发生时,内核向线程库发出一个心的回调,通知阻塞线程有资格运行了。该事件的回调处理程序也需要一个新的虚拟处理器,内核可能分配一个新的虚拟处理器

2

posted @ 2022-05-11 20:24  kokomi~  阅读(57)  评论(0)    收藏  举报