2010-08-14 74 views
-1

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

+3

這對我來說似乎令人難以置信的模糊。有沒有一個特定的語言/框架,你指的是? – 2010-08-14 06:01:22

+0

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

+0

是什麼問題?阻止數據庫模式?或者你談論信號量? – txwikinger 2010-08-14 06:09:00

回答

1

「阻塞」意味着操作不會將控制權返回給調用者,直到「阻塞直到」爲止。

這可以通過幾種方式來實現:

  • 代表阻止別人的責任。例如,請撥打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

0

讓一個線程等待一個事件,這個事件在文件完成播放時被另一個線程觸發。

相關問題