2013-05-20 29 views

回答

1

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

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

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

如果线程受操作系统支持(即它们不是“绿色线程”/“光纤”),它们将通过调用一个OS API退出,该API告诉操作系统它可以释放与其关联的任何数据线。

有时候,抽象都是建立在这种机制使得线程的线程池或将执行该循环遍历任务运行的队列功能之上,但根本的机制是相同的。但是,这些抽象是由OS线程机制之上构建的用户库提供的,而不是由操作系统本身提供的。

相关问题