除了this e-mail from 2008,我找不到任何关于V4L2的线程安全特性的提法。它谈到了大的内核锁,我猜它现在已经消失了,对吧?
有没有人有这方面的最新消息?我可以在没有序列化的情况下从多个线程ioctl (特别是VIDIOC_DQBUF和VIDIOC_QBUF)相同的V4L2文件描述符吗?上面引用的讨论似乎表明答案是依赖于驱动程序的,但我想我还是要问一下。
发布于 2012-04-26 23:16:18
该规范没有提到V4L2是否是线程安全的。然而,看起来有些实现实际上是线程安全的。
POSIX.1-2001和POSIX.1-2008要求标准中规定的所有函数都应是线程安全的,但某些特定函数除外。ioctl()不在其中,因此它是线程安全的。但是,ioctl()是一个取消点,因此线程一旦到达ioctl()就可以终止。
我认为正确的解决方案是假设V4L2不是线程安全的,并相应地进行锁定。
https://stackoverflow.com/questions/10217779
复制相似问题