Python线程模块创建用户空间线程或内核特殊线程

Python线程模块创建用户空间线程或内核特殊线程

问题描述:

我试图在Python中使用threading模块。现在我对这个模块支持的线程类型有这个查询。那就是这些线程是用户空间线程还是内核空间线程Python线程模块创建用户空间线程或内核特殊线程

简答案用户空间线程。 根据我对系统知识的回答,一个进程(或线程)不是用户级别或内核级别。

某些关键任务不能由用户直接访问,例如内存和IO。要使用这些resources,内核将会公开API's。 这些API最好称为system calls。 所以你的线程可能会在你的程序中使用那些system calls。但是你不能只产卵内核线程

+0

如果我使用pthread库来创建线程,那么这些线程是不是内核级线程 – user3282758

+0

我还不清楚Python线程模块在我们创建新的python线程时是否内部使用pthread_create,还是创建用户级别线程 – user3282758

,正确的说法是不内核空间线程(因为Python没有访问内核内存空间),但内核级线程threading模块使用系统提供的机制(如POSIX系统上的pthread),通常依靠内核接口(通过Linux上的clone(CLONE_THREAD)创建任务)。

Python支持用户级线程(那些纯粹在解释器中实现并且只占用一个内核级线程的线程)通过生成器,greenlet和类似的库。

+0

这意味着不同于pthread(它创建内核空间线程),Python线程模块为我们提供了用户空间线程 – user3282758

+0

@ user3282758:'线程'很有可能在引擎盖下使用'pthread'。 – myaut

+0

如果在引擎盖下使用pthread,那我们为什么不把它们称为内核空间线程 – user3282758