什么是线程?
为什么要多线程?
线程也称为轻量级进程。这个想法是通过将一个进程划分为多个线程来实现并行性。例如, 在浏览器中, 多个选项卡可以是不同的线程。 MS Word使用多个线程:一个线程格式化文本, 另一个线程处理输入, 等等。多线程的更多优点将在下面讨论。
进程还是线程?
主要区别在于, 同一进程中的线程在共享内存空间中运行, 而进程在单独的内存空间中运行。
线程不像进程一样彼此独立, 结果线程与其他线程共享它们的代码部分, 数据部分和OS资源(例如打开的文件和信号)。但是, 与进程一样, 线程也有其自己的程序计数器(PC), 寄存器集和堆栈空间。
线程胜于进程的优势
1.响应能力:如果将进程划分为多个线程, 如果一个线程完成其执行, 则可以立即返回其输出。
2.更快的上下文切换:与进程上下文切换相比, 线程之间的上下文切换时间更短。进程上下文切换需要CPU的更多开销。
3.有效利用多处理器系统:如果我们在一个进程中有多个线程, 那么我们可以在多个处理器上调度多个线程。这将使流程执行更快。
4.资源共享:诸如代码, 数据和文件之类的资源可以在进程中的所有线程之间共享。
注意:堆栈和寄存器不能在线程之间共享。每个线程都有自己的堆栈和寄存器。
5.沟通:多个线程之间的通信更容易, 因为这些线程共享公共地址空间。在处理过程中, 我们必须遵循一些特定的通信技术来在两个过程之间进行通信。
6.增强的系统吞吐量:如果将一个进程划分为多个线程, 并且每个线程功能都被视为一个作业, 则每单位时间完成的作业数将增加, 从而增加了系统的吞吐量。
线程类型
有两种类型的线程。
用户级别线程
内核级线程
参考:用户线程与内核线程
更多细节参考:C语言中的多线程
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。