Condividi tramite


Elaborazione mutex in AVStream

Il terzo mutex è il mutex di elaborazione. I singoli filtri e pin hanno i propri mutex di elaborazione. AVStream acquisisce in modo indipendente il mutex di elaborazione prima di elaborare a livello di filtro e pin, per sincronizzare l'accesso alle strutture correlate all'elaborazione. AVStream acquisisce anche il mutex di elaborazione durante altre operazioni, inclusi i pin di associazione a una sezione di pipe, operazioni di sospensione o riattivazione e modifica dei descrittori. I minidriver possono acquisire manualmente il mutex per eseguire un'operazione sincrona, ad esempio l'elaborazione o la modifica del descrittore. Un minidriver deve ottenere il mutex di elaborazione prima di apportare qualsiasi modifica che non può verificarsi contemporaneamente all'elaborazione.

Come gli altri due tipi di mutex, i mutex di elaborazione non vengono ottenuti in modo ricorsivo. Ciò significa che se un minidriver tenta di afferrare il mutex di elaborazione durante l'elaborazione, si verifica un deadlock.

Non usare il mutex di elaborazione per sospendere l'elaborazione per lunghi periodi di tempo. Modificare invece il gate di controllo di elaborazione direttamente usando le funzioni KSGATEXxx .

Un thread che ha acquisito un mutex di elaborazione non deve successivamente tentare di acquisire il mutex del controllo filtro.

Per modificare il mutex di elaborazione, usare le funzioni seguenti:

KsFilterAcquireProcessingMutex, KsPinAcquireProcessingMutex, KsFilterReleaseProcessingMutex, KsPinReleaseProcessingMutex