酷炫网站设计,辽宁做网站和优化哪家好,谷歌推广哪家公司好,福建省文明建设办公室网站进程#xff08;Process#xff09;#xff1a;
一个程序在执行时#xff0c;操作系统为其分配的资源#xff08;如内存、CPU 时间等#xff09;构成了一个进程。每个进程都有自己的独立的地址空间、堆栈和局部变量#xff0c;它们之间不共享内存#xff08;除非通过特…进程Process
一个程序在执行时操作系统为其分配的资源如内存、CPU 时间等构成了一个进程。每个进程都有自己的独立的地址空间、堆栈和局部变量它们之间不共享内存除非通过特定的机制比如共享内存或管道等。进程之间是隔离的一个进程的崩溃通常不会影响到其他进程。
线程Thread
线程是进程中的执行单元也叫做轻量级进程。一个进程至少有一个主线程通常是程序启动时自动创建的它也可以创建多个子线程来执行不同的任务。线程之间共享同一个进程的地址空间和资源如全局变量、打开的文件描述符等但是每个线程都有自己的栈空间和程序计数器。线程的创建和销毁比进程要轻量得多因为它们共享父进程的资源不需要独立的内存空间。
主线程Main thread
在程序启动时操作系统会为程序创建一个主线程也就是程序的入口点。主线程通常负责启动程序的主要逻辑在大多数程序中主线程会处理用户输入、程序控制流等。
子线程Child thread
子线程是在程序运行过程中由主线程或其他线程创建的线程。它们负责执行某些并行任务或辅助任务以提高程序的效率。 例如主线程可能负责UI渲染而子线程则负责后台计算或处理I/O操作。子线程通常在执行完它们的任务后结束可以通过线程的join()方法或其他同步机制来等待子线程结束确保程序的正确性。
单核CPU
单核CPU一次只能运行一个线程。尽管操作系统支持多线程但它会使用时间片轮转的方式在不同线程之间快速切换让用户感觉到多个线程是同时执行的。实际上这些线程是按顺序轮流执行的。
多核CPU
多核CPU能够同时运行多个线程每个核心可以运行一个线程。因此在多核处理器上如果程序能够有效地利用多个线程比如多线程计算任务就能实现更高的并行度和更好的性能。
线程的执行与独立性 每个线程都有自己的 程序计数器Program CounterPC用于记录当前执行指令的地址确保线程能按照正确的顺序执行。 每个线程都有自己的 寄存器 和 堆栈它们存储的是与该线程执行相关的数据如局部变量、函数调用信息等。 不同的线程可以共享进程中的资源例如全局变量、打开的文件、内存空间等。 然而线程间的共享资源也带来了潜在的竞争问题。当多个线程同时访问同一资源时如果不加以控制可能会导致数据竞争Race Condition或不一致的状态。因此线程间常常需要通过 同步机制如互斥锁、信号量、条件变量等来保证共享资源的正确访问。
多线程编程中的挑战
同步与互斥多个线程访问共享数据时需要进行同步操作避免数据竞争和不一致。死锁如果多个线程互相等待对方释放资源可能会导致程序永远无法继续执行。设计时要避免死锁的发生。上下文切换操作系统在多个线程间进行切换时会保存和恢复线程的状态。频繁的上下文切换会带来性能损失因此需要合理设计线程的使用。
如果主线程需要其他功能的辅助时此时可以创建一个新的线程这个线程是子线程而函数里的原本的命令是主线程
也就是说我运行一个程序系统自动会为其创建一个线程此为父线程而程序中创建的所有线程都是隶属于该父线程的子线程
一个代码整体就是一个任务一个任务就是一个进程。
单核CPU一次只能运行一个线程多核CPU可以运行多个。一个进程可以包括多个线程每个线程运行时会有一个程序计数器记录当前程序执行的位置多个线程有多个程序计数器每个线程独立运行。每个线程有自己的寄存器和堆栈线程间共享地址空间、全局变量、打开的文件等等信息