2

我目前正在研究操作系统上下文中的线程,我不确定线程​​是否是一组可以重复执行的指令序列,或者它是否由用户或操作系统填充和替换为新指令。

感谢捆绑!-汤姆

4

1 回答 1

1

我不太清楚你的意思 - 程序的编译指令存储在内存中并且在运行时不会更改(至少对于非 JIT 编译的语言)。

线程是与代码本身完全不同的概念。线程使您能够在代码中“同时在两个地方”运行。在概念级别上,线程只是您在执行某些代码的任何时候需要的上下文的容器。这意味着每个线程都有一个调用堆栈和一组寄存器(如果线程正在运行,它们实际上存储在处理器的寄存器中,或者如果线程暂停,它们实际上存储在其他地方)。

几乎所有线程库都是这样工作的,新线程将执行一些用户定义的函数,然后退出。这个函数可以长时间运行,就像main()(这是你的进程中的第一个线程执行的函数)。

如果操作系统支持线程(即它们不是“绿色线程”/“纤维”),它们将通过调用操作系统 API 退出,该 API 告诉操作系统它可以解除分配与该线程关联的任何数据。

有时,抽象是建立在这种机制之上的,这样一个线程或线程池将执行一个函数,该函数简单地循环一个任务队列以运行,但基本机制是相同的。然而,这些抽象是由建立在操作系统线程机制之上的用户库提供的,而不是由操作系统本身提供的。

于 2013-05-21T17:22:13.643 回答