多线程模型-一对多模型

用户名

我一直在读恐龙书,对此模型感到困惑。

这些书说,对于一对多模型,“线程管理是由用户空间中的线程库完成的,因此效率很高;但是,如果线程进行阻塞系统调用,则整个过程都会阻塞。而且,因为只有一个线程可以一次访问内核,多个线程无法在多处理器上并行运行”

我感到困惑的是,如果进行了阻塞的系统调用,则整个进程将阻塞的含义是什么?这是否意味着如果我有一个多线程程序,并且其中一个线程块被阻塞,那么它的所有线程都必须等待,从而有效地使程序停止运行?

如果正在执行的程序导致该模型阻塞,是否表示由于内核线程正在阻塞而无法交换另一个单独的程序来执行?如果答案是肯定的,那么可以交换另一个程序(进程),为什么在阻塞线程被迫等待时,多线程程序不能简单地执行另一个线程?

里尔

如果您在用户级别管理线程,则意味着交换是由您的应用程序完成的,而不是由OS调度程序完成的。每个线程都必须到达某个位置,在该位置上他放弃(或失去)对管理机制的控制权,但是该机制也是用户级别的,因此,如果其中一个线程正在进行系统调用,则该线程即为您的线程管理系统(并通过所有其他线程)必须等到内核代码完成。

操作系统始终保持活动状态,并且可能仍然抢占整个程序,因此其他进程将不会饿死,只有您自己管理内部的“线程”。这些线程在该块期间无法启动,因为负责启动它们的机制也被内核阻止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一对多的导轨模型

来自分类Dev

Android线程模型是一对一还是多对一?

来自分类Dev

多线程模型之间的差异

来自分类Dev

C#多线程模型

来自分类Dev

这是一对多的关系模型问题

来自分类Dev

自引用一对多模型

来自分类Dev

一对多模型和Django Admin

来自分类Dev

无法将线程并发模型设置为多线程单元

来自分类Dev

Jhipster,AngularJS客户端模型其余一对多

来自分类Dev

验证一对多模型.parent不是self

来自分类Dev

使用嵌套属性保存一对多模型

来自分类Dev

雄辩的模型具有多个一对多的表

来自分类Dev

在Laravel中一对多删除相关模型

来自分类Dev

Django一对多模型和管理内联

来自分类Dev

CodeFirst一对多视图模型进行查看

来自分类Dev

使用嵌套属性保存一对多模型

来自分类Dev

在Laravel中一对多删除相关模型

来自分类Dev

在Flask sqlalchemy中订购一对多模型?

来自分类Dev

Laravel 一对多模型关系不起作用

来自分类Dev

Django 模型计算字段从一对多的关系

来自分类Dev

同一模型之间的多对多和一对多关联

来自分类Dev

Laravel雄辩:一对一和一对多两种模型之间的多重关系

来自分类Dev

定义了 2 个模型之间的一对一关系,但似乎仍然能够建立一对多

来自分类Dev

如何通过另一个模型定义同一模型之间的一对多连接

来自分类Dev

当两个类之间具有多个不同的(一对多,多对多)关系时,如何注释模型类

来自分类Dev

灰烬模型:一对多固定装置,服务器调用

来自分类Dev

Django在外壳中从一对多模型关系中检索所有对象

来自分类Dev

灰烬模型:一对多固定装置,服务器调用

来自分类Dev

如何在Rails 4中为一对多的双向关系设置模型?

Related 相关文章

热门标签

归档