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