저는 DSPACK 컴포넌트 라이브러리를 사용하는 Delphi 6 DirectShow 푸시 소스 비디오 필터를 가지고 있습니다. 특정 작업을 수행하기 전에 필터의 어떤 측면에서 필터 상태를 잠그는 것이 필요합니까? 예를 들어, 내 필터의 FillBuffer() 메소드에서 비트 맵 캔버스를 작성하기 전에 필터의 공유 상태를 잠글 필요가 있습니까? 또는 필터 핀 연결/연결 해제 이벤트 또는 미디어 형식 협상 등과 같이 공유 상태가 잠겨야만하는 작업입니까?DirectShow 필터의 공유 상태를 잠그는 것에 대해 언제 걱정해야합니까?
0
A
답변
2
원자 적 조작을 보장하기 위해 필터를 잠글 수 있습니다 (필터 특정 적이 지 않으며 다중 스레드 환경의 모든 오브젝트에 적용됩니다). 일반적으로 데이터 액세스 또는 작업의 일련 화입니다.
예를 들어, CTransformFilter
클래스에는 두 개의 중요한 섹션 인 m_csFilter
과 m_csReceive
이 있습니다.
m_csFilter
은 한 스레드가 무언가를 변경하는 동안 다른 스레드가 동일한 데이터를 동시에 만지지 않도록 데이터 상태를 보호합니다. 다른 하나 인 m_csReceive
은 수신 및 스트림 끝 이벤트를 직렬화하는 데 사용됩니다.
동시 스레드의 작업으로 작업이 중단되지 않도록 필터 상태를 잠글 필요가 있습니다. 자물쇠가 다른 스레드를 지연시킬 수 있으므로 다른 스레드에서 실행 가능한 최소한의 시간에만 자물쇠를 잠그는 것이 좋습니다.
관련 문제
- 1. HierarchyID가 부족하다는 것에 대해 걱정해야합니까?
- 2. 언제 ActiveRecord 잠금에 대해 걱정해야합니까?
- 3. 파이프가 오버 플로우되는 것에 대해 걱정해야합니까?
- 4. DirectShow 필터의 속성을 설정하는 방법
- 5. IE6 이하에 대해 걱정해야합니까?
- 6. Windows 클립 보드에 많은 양의 데이터를 저장하는 것에 대해 걱정해야합니까?
- 7. 돈을 받기 전에 Apk을 클라이언트에게 보내는 것에 대해 걱정해야합니까?
- 8. iOS 응용 프로그램에서 스레드 안전성에 대해 언제 걱정해야합니까?
- 9. NSUserDefaults의 충돌에 대해 걱정해야합니까?
- 10. MySQL 데이터베이스의로드에 대해 걱정해야합니까?
- 11. 나는 이것에 대해 걱정해야합니까 ...?
- 12. 플래시의 스레드 안전성에 대해 걱정해야합니까?
- 13. 가짜 계정/웹 사이트의 로그인에 대해 걱정해야합니까?
- 14. PHP : 숨겨진 파일로 상태를 유지하는 것에 대해 혼란 스럽습니다.
- 15. Doctrine2 EntityManagers의 여러 인스턴스와의 불일치에 대해 걱정해야합니까?
- 16. 클릭 후 공유 지점의 웹 파트에 초점을 맞추는 것에 대해
- 17. DirectShow 필터의 리소스 비트 맵 파일에서 이미지 데이터를로드하는 방법은 무엇입니까?
- 18. DirectShow 변환 필터의 입력 핀에서 수신 방법이 호출되지 않습니다.
- 19. 입력 핀의 MediaType 변경에 응답하는 DirectShow VideoRender 필터의 취득은?
- 20. Big Endianness에 대해 걱정해야합니까 아니면 사소한 측면입니까?
- 21. 하나의 CPU 시스템에서 NUMA에 대해 걱정해야합니까?
- 22. .NET 코드의 난독 화에 대해 걱정해야합니까?
- 23. 스윙에서 "this"포인터 누출에 대해 걱정해야합니까?
- 24. 특정 Java.exe를 죽이는 것에 대해
- 25. MS SQL 서버로 Asp.net 웹 사이트 실행 - 언제 확장성에 대해 걱정해야합니까?
- 26. 여러 사용자에 대해 DataGridview에서 레코드를 잠그는 방법
- 27. filtDirectShow 필터의 출력 핀을 설정하는 방법은 무엇입니까?
- 28. DirectShow 라이브 소스 필터 디자인
- 29. 숫자를 파싱하는 것에 대해 게으른 JSON 파서?
- 30. IOS 장치를 실제 장치에 설치하는 것에 대해
감사합니다. 내 코드 외부의 레이어에있는 DirectShow가 특정 작업이 진행 중임을 알릴 필요가있는 "특수한"세마포어라고 생각했습니다. 귀하의 설명에서와 같이 그것은 표준 동기화 시나리오 일뿐입니다. –