| 12345678910111213141516171819202122232425262728293031 |
- using System;
- namespace IvfTl.Hardware.Impl
- {
- /// <summary>
- /// 全进程唯一相机原生调用锁实现。替代 control/operate/af 三套各自的 static locker(13 §②/§3.5)。
- /// 所有 CameraImpl 的 native 调用都经本类的同一把 _gate 锁串行化——跨相机、跨调用者一把锁,
- /// 因 mvcapi.dll 非线程安全。
- /// ⚠ 真机验证 V-011:一把全局锁是否拖慢多舱并行采集;如需要可后续改按相机分锁但保跨调用者互斥。
- /// </summary>
- public sealed class CameraGateImpl : ICameraGate
- {
- private readonly object _gate = new object();
- public T Invoke<T>(Func<T> nativeCall)
- {
- lock (_gate)
- {
- return nativeCall();
- }
- }
- public void Invoke(Action nativeCall)
- {
- lock (_gate)
- {
- nativeCall();
- }
- }
- }
- }
|