DirectShow - 14 DirectShow的线程和临界区
来源:互联网 发布:知乎如何使用邮箱注册 编辑:程序博客网 时间:2024/06/06 05:41
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类来锁住这个临界区。
(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类来锁住这个临界区。
0 0
- DirectShow - 14 DirectShow的线程和临界区
- directshow的线程约束
- [DirectShow] DirectShow的窗口
- [DirectShow] DirectShow的窗口
- 编写DirectShow Filters—线程和关键区
- DirectShow
- DirectShow
- directshow
- directshow
- Directshow
- DirectShow
- directshow
- DirectShow
- directshow
- directshow
- DIRECTSHOW
- directshow
- directshow
- 树状数组-高低桥
- DirectDraw
- DirectDraw系统集成
- DirectShow-13 Seeking
- 回调函数
- DirectShow - 14 DirectShow的线程和临界区
- 【iOS开发】---- 强大的UI修改工具 UIAppearance
- 关于移动中的button的响应问题
- Cocos2dx 小技巧(一)预定义文件路径
- 小说名词解释:种田派
- 时间管理推荐书目
- BitmapFactory.Options.inSampleSize 的用法
- GTD的好处
- 动漫追踪--反叛的鲁鲁修