V4L2的线程安全性如何?

时间:2012-04-18 20:52:29

标签: c++ c thread-safety posix v4l2

除了this e-mail from 2008之外,我找不到V4L2的线程安全特性。它谈到了大内核锁,我猜现在已经消失了,对吗?

有人对此有任何更新信息吗?我可以ioctl(我特别想到VIDIOC_DQBUFVIDIOC_QBUF)来自多个线程的相同V4L2文件描述符而不进行序列化吗?上面引用的讨论确实表明答案是依赖于驾驶员的,但我想我还是会问。

1 个答案:

答案 0 :(得分:3)

规范没有提到V4L2是否是线程安全的。但是,似乎某些实现实际上是线程安全的。

POSIX.1-2001和POSIX.1-2008要求标准中指定的所有函数都是线程安全的,但某些特定函数除外。 ioctl()不是其中之一,所以它是线程安全的。 但是,ioctl()是一个取消点,所以线程一旦到达ioctl()就可以终止。

我认为正确的解决方案是假设V4L2不是线程安全的并且相应地进行锁定。