10

除了这封来自 2008 的电子邮件之外,我找不到任何提及 V4L2 的线程安全特性的内容。它谈到了大内核锁,我猜它现在已经消失了,对吧?

有人有这方面的最新信息吗?我可以ioctl(我特别想VIDIOC_DQBUFVIDIOC_QBUF)来自多个线程的相同 V4L2 文件描述符而无需序列化吗?上面引用的讨论似乎表明答案取决于驱动程序,但我想我还是会问。

4

1 回答 1

4

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

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

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

于 2012-04-26T15:16:18.253 回答