2017-03-06 135 views
0

我注意到它经常出现表达式:“系统线程”。这是什么意思?特别是,我无法想象不是-系统线程。只是,系统必须知道线程。操作系统(调度程序)切换上下文,以便他必须知道它!系统线程vs非系统线程

例如,第四页上写了有关系统线程: http://www.dabeaz.com/python/GIL.pdf

+0

请向我们展示您参考的文档的示例。也许是一个链接? –

+0

对于游戏引擎而言,这实际上是一个非常有趣的话题,其中自定义内存管理器和线程调度程序有时被编写来提高性能。这是一种外在的情况,因为游戏设计师正在优化这些功能以实现特定的功能,而不是针对通用性能(或稳定性)进行优化。 – Aaron

回答

0

系统线程是由操作系统提供的东西。 OS内核负责调度系统线程。如果你的运行时提供了线程和调度程序之类的东西,那么你有非系统线程。这些通常被称为绿色线程。有时非系统线程更高效,或者系统不提供线程。对于Python,非系统线程的示例将由greenleteventlet提供。

0

线程是操作系统的一个结构,它本身只是一个程序,让人们可以在操作系统之上实现在另一个程序线程调度器,如果让他们的愿望(通常都不虽然推倒重来) 。相关的组件可能包括一些中断机制,一个内存管理器(虚拟化内存分配)以及每个线程的指令指针优先级队列。

0

绿色线程,事件循环,协作多任务处理和协同程序的概念通常是什么非系统线程的意思。
它本质上是指结构化程序的方式,这样的而不是阻塞一个线程做的事情一样IO,我们允许另一个任务所使用的线程。
当我们驻留本地线程时,OS可以安排另一个线程使用该CPU。通过协作式多任务处理方法,还可以让应用程序选择接下来要执行的任务。

+1

我不会将“绿色”线程放在与“事件循环”相同的类别中。绿线程是_threads_:每个线程都有自己的执行上下文和自己的调用栈;每个人都可以完全不知道别人在做什么(如果这就是你想要的)。 –

+0

够公平的,但我会说他们至少是相关的概念。 – Magnus