阻塞模式的原理是什么?

阻塞模式的原理是什么?

问题描述:

阻塞,直到文件播放完成,原理是什么,以及如何实现它?阻塞模式的原理是什么?

+3

这对我来说似乎令人难以置信的模糊。有没有一个特定的语言/框架,你指的是? – 2010-08-14 06:01:22

+0

还是原理? – msw 2010-08-14 06:04:46

+0

是什么问题?阻止数据库模式?或者你谈论信号量? – txwikinger 2010-08-14 06:09:00

“阻塞”意味着操作不会将控制权返回给调用者,直到“阻塞直到”为止。

这可以通过几种方式来实现:

  • 代表阻止别人的责任。例如,请拨打pthread_mutex_lock,这可能会阻止。这也使你的功能块。其他功能是read和其他任何可能会阻止的系统调用。
  • 旋转。换句话说,有一些看起来像while (!condition) {}的代码。这将会占用整个CPU内核,因此如果您要阻塞任何大量时间,这不是一个好习惯。
  • 使用信号处理程序。拨打sleep(5000)或其他一些,并通过SIGALARM或其他异步方法终止睡眠。

在媒体播放器的情况下,“阻塞直到文件播放结束”意味着“等到媒体文件播放完毕后才返回”。

+0

就我而言,它是'pEvent-> WaitForCompletion(INFINITE,&evCode);',知道它是如何实现的吗? – Alan 2010-08-14 07:41:35

+0

你关心它是如何实现的吗?您正在使用来自接口的方法,并且该接口记录了行为。这种行为如何实现(在这个层面上)可能不如它重要。你只需要知道,只要你调用该方法,该方法将不会返回,直到操作完成:执行流程被阻塞,直到条件满足。 – 2010-08-14 12:21:09

让一个线程等待一个事件,这个事件在文件完成播放时被另一个线程触发。