首页 > 其他分享 >thread(线程)

thread(线程)

时间:2024-04-16 11:57:07浏览次数:23  
标签:thread process 用户 线程 内核 多线程

动机

  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:依赖所依赖的操作系统而定

标签:thread,process,用户,线程,内核,多线程
From: https://www.cnblogs.com/zhudachang/p/18137242

相关文章

  • 线程(不严谨)
    引子(关于进程)执行完fork()之后创建了一个子进程clone父进程pid是不一样fork()后面的代码,会执行2遍(父和子进程各执行1次)父子进程并发执行父子进程的内存空间是独立的wait()父进程等待子进程结束避免孤儿进程线程(Thread)多线程:很简陋的方式来说,在一个进程......
  • 多线程整理
    一、简介    1.1、进程        当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。一个进程是由多个线程组成。    1.2、线程        线程是程序中的一个执行流,每个线程都有自己的专有寄......
  • 开源相机管理库Aravis例程学习(二)——连续采集multiple-acquisition-main-thread
    目录简介例程代码函数说明arv_camera_set_acquisition_modearv_camera_create_streamarv_camera_get_payloadarv_buffer_newarv_stream_push_bufferarv_camera_start_acquisitionarv_stream_pop_bufferarv_camera_stop_acquisition简介本文针对官方例程中的:02-multiple-acquisit......
  • 10.线程
    第十章【线程】一、进程和线程1、进程:代表了内存中正在运行的应用程序,计算机中的资源(cpu内存磁盘网络等),会按照需求分配给每个进程,从而这个进程对应的应用程序就可以使用这些资源了。进程就是在系统中运行一个应用程序的基本单位。2、线程:是进程中的一个代码执行单元,负责当......
  • Thread
    螺纹基础知识(五要素)螺纹包括五个要素:牙型、公称直径、线数、螺距(或导程)和旋向。牙型 直径螺纹有大径(d、D)、中径(d2、D2)、小径(d1、D1),在表示螺纹时采用的是公称直径,公称直径是代表螺纹尺寸的直径。普通螺纹的公称直径就是大径。线数沿一条螺旋线形成的螺纹称......
  • 通用的上传下载(线程)
    packagecom.duxiang.backgroundmanagement.controller;importcn.hutool.core.io.FileUtil;importcn.hutool.core.util.StrUtil;importcom.duxiang.backgroundmanagement.common.Result;importorg.springframework.web.bind.annotation.*;importorg.springframework.web.......
  • 线程
    什么是线程:进程里面的一条执行流程为什么要引入线程这就不得说说进程的缺点了:进程间的切换,会导致TLB、CPU的Cache失效进程之间是隔离的,进程间的通信需要打破隔离的壁障而相较于进程而言,线程的创建和销毁是轻量级的。同一进程的线程之间的切换,不会导致TLB失效、也不......
  • UE4 iOS打印出所有线程的调用栈
    在Xcode15.2中调试UE4游戏(Development包),执行btall打印出所有线程(共116个线程)的调用堆栈*thread#1,queue='com.apple.main-thread',stopreason=signalSIGSTOP*frame#0:0x00000001f9c7d178libsystem_kernel.dylib`mach_msg2_trap+8frame#1:0x00000001f......
  • Godot UI线程,Task异步和消息弹窗通知
    目录前言线程安全全局消息IOC注入消息窗口搭建最简单的消息提示简单使用仿ElementUIElementUI效果简单的Label样式如何快速加载多个相同节点修改一下,IOC按钮事件注册总结前言最近我在研究Godot的全局消息,然后发现Godot也是有UI线程限制的,只能在主线程的子线程里面修改UI。线......
  • 字节面试:ThreadLocal内存泄漏,怎么破?什么是 ITL、TTL、FTL?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......