DirectShow - 14 DirectShow的线程和临界区

1 The Stream And Application Threads
  (1)一个DirectShow的应用程序至少包括一个 应用程序线程,一个或多个Streaming线程。
  (2)Streaming的主线程一般由Source filter或Paser Filter创建,其他filter可以创建用来传递Sample的工作线程。所以的这些线程都称为Streaming Threads。
2 问题的产生:
   (1)filter在暂停的时候,创建了资源,然后在Streaming中使用了这些资源,当这个filter停止的时候,销毁资源。这样的Streaming线程就可能用到已经被销毁的资源。因此需要进行同步。
   (2)多个Filter访问相同对象的时候,比如多个IMemAllocator::GetBuffer请求一个Sample的时候。
2 Critical Sections
   (1)使用CBasefilter::m_pLock。临界区filter锁。每一个输入pin都需要一个临界区来保护Streaming线程使用的资源。
   (2)使用CCritSec类很容易实现临界区。CCritSec类包含CRITICAL_SECTION窗口对象。可以使用CAutoLock类来锁住这个临界区。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值