5.线程(thread)

动机

  1. 一个应用通常需要处理很多工作,这些同时执行徳任务可以称为“执行流”,我们不希望他们是顺序执行的。
  2. 进程的创建需要消耗大量的时间和资源
  3. 现在,和一个应用相关的所有执行的任务都装在一个进程里面,这些进程内部的执行任务就是“线程”

thread

  1. multithreaded process(多线程)
  • shared(共享)
    • 访问代价低
    • 存储资源节省
    • 如果是多进程,那么会使用多个内存空间,并且对于需要共享的资源,还需要进程机制去共享资源,又会耗费时间。
    • 共享code,data,files
  1. 采用多线程的优点
  • 响应性:可以加快响应
  • 资源共享:code data files
  • 经济:创建和切换比多进程好
  • 可伸缩性:多核下可以并行
  1. definition of threa
  • A thread is a basic unit(基本单元) of CPU utilzation(利用); it comprises a thread id(tid),a program counter, a register set,and a stack(存储局部变量).
  • It shares(共享) with other threads belonging to the same process its code section,data section ,and other operating-system resources,such as open files and signals.
  • A traditional (or heavyweight) process has a single thread of control .If a process has multiple threads of control ,it can perform more than one task at a time.

多线程模型

  1. 多核编程
  • 在多处理器系统中,多核编程机制让应用程序可以更加有效地将自身的多个执行任务(并发的线程)分散到不同的处理器上去运行,以实现并行计算。
  • 所以我们一般考虑多核编程
  1. 多线程模型
  • 用户线程ULT(user level thread)
    • ULT在user mode 下运行,它的管理无需内核支持
  • 内核线程KLT(Kernel Level Thread)
  1. M:1模型
  • 多个用户线程对一个内核线程
  • 优点与缺点:
    • 优点:多个执行流
    • 缺点:实际上只有一个内核线程,多个用户线程,在一个时刻只有一个用户线程在运行。
  1. 1:1模型
  • 一个用户线程对应一个核心线程,对应一个cpu
  • 优点:并发+并行
  • 缺点:内核开销大(时间,空间)
  1. M:M
  • 多路复用,多个用户线程对应多个核心线程
  • 优点:节省内核开销
  • 缺点:实现起来复杂(需要一个管理机制,管理多少个user mode 和kernel mode)

线程库

  1. thread library为程序员提供创建和管理线程的API
  • posix pthreads:用户线程库和内核线程库
  • windows thread:内核线程库
  • java thread:依赖所依赖的操作系统而定
posted @ 2024-04-16 11:47  zhudachang  阅读(7)  评论(0编辑  收藏  举报