社区
C++ 语言
帖子详情
请大家讨论下用户模式下线程同步和使用内核对象线程同步的优缺点
ithzhang
博客专家认证
2011-11-24 03:22:53
加精
如题。windows下。为什么内核对象同步会比用户模式下的线程同步开销大呢。书上说内核对象同步会调用函数导致模式发生切换。但是用户模式下也需要调用API啊。不懂。请大家讨论。
...全文
999
36
打赏
收藏
请大家讨论下用户模式下线程同步和使用内核对象线程同步的优缺点
如题。windows下。为什么内核对象同步会比用户模式下的线程同步开销大呢。书上说内核对象同步会调用函数导致模式发生切换。但是用户模式下也需要调用API啊。不懂。请大家讨论。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
36 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
微达
2012-05-16
打赏
举报
回复
晕,原来是去年的贴子了………
不冷丁
2012-05-14
打赏
举报
回复
顶10楼
mimixi666
2012-05-13
打赏
举报
回复
[Quote=引用 28 楼 的回复:]
晕,原来是去年的贴子了………
[/Quote]
我也晕。。。。哈哈哈。。。
RLib
2012-05-12
打赏
举报
回复
这是谁推荐的
mhslm2
2012-05-12
打赏
举报
回复
怎么理解
Lactoferrin
2012-05-11
打赏
举报
回复
挖坟是一件很有误导性的事
飞天御剑流
2012-05-11
打赏
举报
回复
晕,原来是去年的贴子了………
飞天御剑流
2012-05-11
打赏
举报
回复
[Quote=引用楼主 的回复:]
如题。windows下。为什么内核对象同步会比用户模式下的线程同步开销大呢。书上说内核对象同步会调用函数导致模式发生切换。但是用户模式下也需要调用API啊。不懂。请大家讨论。
[/Quote]
用户模式的线程切换是运行在ring3的,所以不会发生模式切换。对于x86,一般会放在GDT且DPL=3的存储段中。
内核线程与用户模式线程其实各有优缺点,模式切换只是其一,内核线程能够从多处理器中得益,而用户模式线程只能运行于进程所得到的处理器资源中。
shiter
2012-05-11
打赏
举报
回复
内核,有那么神奇么??
oppo11
2012-05-10
打赏
举报
回复
其实感觉lz想问的是为什么进入内核的代价那么大??好像看windows核心编程说进入内核要花费几百到1000个周期(记得不清楚了)
linyilong3
2012-05-09
打赏
举报
回复
其实感觉lz想问的是为什么进入内核的代价那么大??好像看windows核心编程说进入内核要花费几百到1000个周期(记得不清楚了)
LoveYouSelf
2012-05-09
打赏
举报
回复
[Quote=引用 10 楼 的回复:]
《Windows核心编程》
[/Quote]
看来赵总学富五车啊! 我还在看windows程序设计呢! 呵呵! 看到有人都先我一步看windows核心编程了我得赶进度了! 呵呵!
lijianli9
2012-05-09
打赏
举报
回复
API只是寄存器的切换,不代表模式的切换。
小昌
2012-05-09
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
用户模式提供了非常好的性能,但有一定局限性和容易陷入死锁
内核模式的唯一缺点就是他们的性能,因为他们都需从用户模式切换到内核模式
[/Quote]
我不太赞同陷入死锁的说法。
CC的糖豆
2012-05-09
打赏
举报
回复
恩呢《Windows核心编程》
赵4老师
2012-05-09
打赏
举报
回复
《Windows核心编程》
hao603324
2012-05-09
打赏
举报
回复
使用内核对象同步调用的API会导致CPU模式发生切换。用户模式下的则不会。
yzmars8
2012-05-09
打赏
举报
回复
使用内核对象同步调用的API会导致CPU模式发生切换。用户模式下的则不会。
hao7228a
2012-05-09
打赏
举报
回复
啊撒地方撒地方
z1058017535
2011-12-02
打赏
举报
回复
顶贴
也不懂
求解答
加载更多回复(5)
JAVA多线程精讲下
本课程是《零基础学Java》系列课程中的多线程相关课程.授课形式延续了之前课程的授课风格。内容细腻、详尽,由浅入深!通过本门课程的学习你可以深刻理解Java多线程的原理及实现运行机制,深刻学习多线程的生命周期、调度、控制等内容。多线程精讲下课程内容涵盖如下:l 线程的同步(线程安全问题)l 线程的死锁l 线程间通信l 线程组l 线程池l 多线程的第三种实现方案l 匿名内部类方式
使用
多线程l 定时器的
使用
l 多线程面试题
系统线程(
内核
线程)和
用户
线程区别
文章目录系统线程(
内核
线程)和
用户
线程区别进程 、线程系统线程和
用户
线程
用户
线程优点缺点系统线程优点缺点两者关系往往实现这样的模型。可把另外⼀个任务调度到这个系统线程上执⾏往往在系统线程之上做⼀次抽象参考链接
内核
线程和
用户
线程的区别
内核
级线程切换
用户
级线程
内核
线程的实现分两
用户
线程运行在一个中间系统上面。
用户
级线程和
内核
级区别
内核
线程优
用户
线程优参考链接 系统线程(
内核
线程)和
用户
线程区别 进程 ...
用户
级线程和
内核
级线程的区别
线程的实现可以分两类:
用户
级线程,
内核
级线程和混合式线程。
用户
级线程
用户
线程在
用户
空间中实现,
内核
并没有直接对
用户
线程进程调度,
内核
的调度
对象
和传统进程一样,还是进程(
用户
进程)本身,
内核
并不能看到
用户
线程,
内核
并不知道
用户
线程的存在。 不需要
内核
支持而在
用户
程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制
用户
线程。
内核
资源的分配仍然是按照进程(
用户
进程)进行分配的;各个
用户
线程只能在进程内进行资源竞争。
用户
级线程
内核
的切换由
用户
态程序自己控制
用户
线程和
内核
线程区别
1.
用户
级线程和
内核
级线程的区别
用户
级线程仅存于
用户
空间中,其创建、撤销、线程之间的同步与通信功能,都无须利用系统调用来实现。总之,它的实现是和操作系统无关的,
用户
进程只需要通过线程库来完成线程控制;相反,
内核
线程的建立和销毁都是由操作系统负责、通过系统调用完成的。从描述的区别上就可以看出,
用户
级别的线程不用经过
内核
空间,效率肯定很高,而
内核
线程是驻留在
内核
空间的,
用户
进程在创建
使用
内核
线程时访问
内核
空间是必不可少的工作,效率上相对较低。既然
内核
线程效率低,那为什么还要引入他呐?我们知道在线程中经常会用到
用户
级线程和
内核
级线程
据操作系统
内核
是否对线程可感知,可以把线程分为
内核
线程和
用户
线程。
用户
级线程由应用程序所支持的线程实现,
内核
意识不到
用户
级线程的实现。
内核
级线程又称为
内核
支持的线程。
C++ 语言
64,647
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章