为什么将线程称为线程?


9

我了解一个进程是资源所有权和可执行指令的单元。线程允许一个进程通过多次执行共享其资源,并且由于与整个进程相关的所有开销,操作系统更容易调度线程。

但是为什么要命名线程?它是否有对字符串或执行交错的引用?即使这样,在我看来这也不是一个直观的术语。

Answers:


11

你看过字典吗?“ 线 ”一词在缝制后具有含义。

3:连续或抽出的东西:作为

a: 一连串的推理或思路(按想法或事件),将各部分按顺序连接

http://www.merriam-webster.com/dictionary/thread


有趣。我已经搜索了“定义线程”,但是该定义不是其中之一。我很高兴您提到这一点,因为它足够抽象,可以跨越从一般用法到编程的桥梁。
马特

9

有没有看过倍数的线如何扭曲,形成更粗更结实的绳索?

那就是隐喻,每个线程都是独立的,但是所有线程一起协作以最终生成计算输出。此外,如同在纺织线中一样,线可以折断而不损害整个帘线的结构。

在此处输入图片说明


2
虽然我总是想象“线”只是您和GrandmasterB所描述的,但不确定整个“扭曲,粗,结实的线”。取而代之的是,操作系统中的大多数线程看起来像这样:miqel.com/bonnaroo_2008_music/yarn_string_trips.jpg(右边的人将是内存控制器)是的,有时这些字符串中的少数是用于解决常见问题的,但大多数是在那里,操作系统就让他们所有人都可以做他们想做的(在合理的范围内)
DXM 2014年

7

tl; dr:之所以称为线程是因为“线程”是一个恰当的隐喻。


启动线程时,您依赖操作系统分配处理时间,以便线程可以执行。在线程执行时,处理器(或内核)将所有精力都放在线程上。当操作系统将核心切换到其他线程时,在为另一个线程提供服务时,您的线程将停止执行。

因此执行过程随处可见。但是,尽管有这些跳转,但机器指令集的完整性仍保持不变,因为我们建立了围栏和并发机制来保护其状态以及与之交互的对象的状态。

因此,该线程不是指任何特定线程中的指令执行,而是指最终将在我们创建的线程中执行的指令。换句话说,每个线程都可以看作是一个单独的机器或代理(我们称它们为轻量级进程),而不必考虑操作系统正在执行的所有上下文切换以使它们看起来像是全部同时执行。

换句话说,尽管操作系统在幕后进行了很多跳跃,但我们称为线程(我们在轻量级进程中执行的操作序列)的线程仍可以视为相同的操作序列,如果我们没有采取必要的并发保护措施,就不会产生线程。


如果此描述似乎过于繁琐和抽象,请考虑使用论坛中的主题,例如Reddit。您可以分支出新的讨论;每个讨论都是其自己的话题。您可以在线程之间来回跳转。但是,每个线程作为一个单独的会话仍保持其结构完整性。


4

很难解开(完全意图双关)术语“ Thread”的来源,因为各种各样的东西使水变得浑浊。

螺纹在论坛或电子邮件意义上的使用量从根据短语“对话线程”几乎可以肯定茎这个日期就1593回。

尽管您所询问的线程的含义似乎不太清楚,因为根据链接,尽管我们实现了共享内存过程,但直到70年代或可能是80年代初,我们才知道它们实际上不是“线程”。实际上早于我们今天认为的重量级流程。鉴于共享内存多处理的一种相关形式被称为“纤维”,我强烈怀疑“线程”一词可能使人联想到织布或其他与纺织品相关的类比。


3

我认为这与“推理线程”或“思想线程”有关。

与进程相比,线程共享内存。因此,如果将一个过程比作一个人用自己的思想(内存)进行比喻,则可以将一个线程比作具有该思想的一条思路。


1

我在某个地方读到了线程的类比,将CPU视为缝纫针,将线程视为实际的字符串。现在,如果您有多根缝纫针而只有一根线。您不认为这将是非常低效的。另一个CPU /缝纫针将等待该线可用。但是,如果我们有多个线程,则可以在短时间内完成工作。


1
它出什么问题了?为什么是-1?
灵巧的2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.