对临界区属于同步方法的一点疑问

kavinwell 2008-02-20 03:18:54
有的资料说,“线程的同步可分为用户模式的同步和内核对象的同步两大类。用户模式中线程的同步方法主要有原子访问和临界区等方法,其特点就同步速度特别快,适合对线程运行速度有严格要求的场合。内核对象的线程同步则主要由事件、等待定时器、信号量以及信号灯等内核对象构成”。
而在定义临界区时,是这么说的:临界区是对共享资源进行访问的程序片段,它在任意时刻只允许一个线程对共享资源进行访问。而这个定义明显是互斥的定义而不应该算是同步。毕竟同步还要考虑顺序的问题。
请教各位,临界区到底按同步理解还是互斥理解呢?在平时用EnterCriticalSection等语句时也只是作为互斥用的,哪点证明可以作为同步使用呢?谢谢!
...全文
153 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
有问题请先GOOGLE,BAIDU
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
接分先!
kavinwell 2008-02-22
  • 打赏
  • 举报
回复
回12楼和13楼,我在8楼已经贴了我的观点,再贴一次资料上关于同步和互斥的解释吧:

互斥和同步是操作系统与并发程序设计的核心问题。互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排他性,但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步是指在互斥的基础上,通过其他机制实现访问者对资源的有序访问,在一般情况下,同步已经实现了互斥,可以说同步是一种更为复杂的互斥。
独孤过儿 2008-02-21
  • 打赏
  • 举报
回复
楼主,你先说一下你印象中的同步应该是什么样的吧...
sheenl 2008-02-21
  • 打赏
  • 举报
回复
不是很清除你指什么样的同步。
一个变量, 然A, B, C...线程按顺序访问叫做同步?那就设多个临界区不就行了?
kavinwell 2008-02-21
  • 打赏
  • 举报
回复
Tanenbaum的著作:操作系统设计与实现(第三版上册)P.49上面论述的临界区只是讲述的是互斥的概念,没有提到同步,给出的也是互斥图。所以一直不明白临界区是怎么解决同步的。正如我顶楼列的内容我不是很懂:
“线程的同步可分为用户模式的同步和内核对象的同步两大类。用户模式中线程的同步方法主要有原子访问和临界区等方法,其特点就同步速度特别快,适合对线程运行速度有严格要求的场合。内核对象的线程同步则主要由事件、等待定时器、信号量以及信号灯等内核对象构成”
kavinwell 2008-02-21
  • 打赏
  • 举报
回复
你说的这个同步和互斥, 是并发程序需要解决问题。 而为了解决同步和互斥问题, 则采用信号量(semaphore), 互斥量(mutex), 临界区(CritialSection)等等技术, 还有不会睡眠的自旋锁等。实际上是不同的概念。

看书仔细很好, 但是死究定义也是一种没意思的事情。
----------------
而为了解决同步和互斥问题, 采用临界区(CritialSection)等技术是不错啊,但我问题的意思是到底是解决同步的还是互斥的问题呢?难道同步也能解决?我不知道临界区怎么来做有序访问的。谢谢
michney 2008-02-20
  • 打赏
  • 举报
回复
同步就意味等待
异步异味重叠

临界区当然要等待
csdn5211 2008-02-20
  • 打赏
  • 举报
回复
互斥也是同步
taodm 2008-02-20
  • 打赏
  • 举报
回复
同步就是互斥的意思呀。
楼主,你还是该找本《操作系统:设计与实现》补些必要的基础知识吧。
tang_cheng 2008-02-20
  • 打赏
  • 举报
回复
资料上的同步的含义包含了同步和互斥,是一个广义的同步概念。
sheenl 2008-02-20
  • 打赏
  • 举报
回复
你说的这个同步和互斥, 是并发程序需要解决问题。 而为了解决同步和互斥问题, 则采用信号量(semaphore), 互斥量(mutex), 临界区(CritialSection)等等技术, 还有不会睡眠的自旋锁等。实际上是不同的概念。

看书仔细很好, 但是死究定义也是一种没意思的事情。
kavinwell 2008-02-20
  • 打赏
  • 举报
回复
互斥和同步是操作系统与并发程序设计的核心问题。互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排他性,但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步是指在互斥的基础上,通过其他机制实现访问者对资源的有序访问,在一般情况下,同步已经实现了互斥,可以说同步是一种更为复杂的互斥。

-------
从上述话中可以看出,同步有有序的,互斥是无序的,难道上述话存在问题吗?同步怎么可能就是互斥呢!
hydvivian 2008-02-20
  • 打赏
  • 举报
回复
同步意味着串行
异步意味着并行

同步即互斥。
kavinwell 2008-02-20
  • 打赏
  • 举报
回复
同步就是互斥的意思呀。
--------------
yun。。。
czp_opensource 2008-02-20
  • 打赏
  • 举报
回复
概念有点模糊。

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧