V4L2 的线程安全性如何
How thread-safe is V4L2?
除了这封 2008 年的电子邮件外,我找不到任何关于 V4L2 线程安全特性的提及。它谈到了大内核锁,我想现在已经消失了,对吧?
有人对此有任何更新信息吗?我可以在不序列化的情况下从多个线程ioctl
(我特别考虑VIDIOC_DQBUF
和VIDIOC_QBUF
)相同的 V4L2 文件描述符吗?上面引用的讨论似乎确实表明答案取决于驱动程序,但我想我还是会问。
该规范没有提到 V4L2 是否是线程安全的。但是,似乎某些实现实际上是线程安全的。
POSIX.1-2001和 POSIX.1-2008 要求标准中指定的所有函数都是线程安全的,但某些特定函数除外。 ioctl() 不是其中之一,因此它是线程安全的。但是,ioctl() 是一个取消点,因此线程一旦到达 ioctl()就可以终止。
我认为正确的解决方案是假设 V4L2 不是线程安全的,并相应地进行锁定。
相关文章:
- 类与私有变量的其他类之间的线程安全性
- 调用socket.remote_endpoint(提升 asio 库)线程安全性
- std::lock_guard 似乎提供了线程安全性,尽管作用域块
- C++中向量和列表的非写入成员函数的线程安全性
- 线程安全性和静态变量/成员功能
- 是仅使用get或toplown的原始类型的线程安全性的威胁
- 提高 ASIO stream_descriptor和事件 FD 线程安全性
- 是boost :: asio :: thread_pool线程在多个线程上发布任务时的安全性
- OpenMP中树结构的线程安全性
- 静态变量初始化的线程安全性
- c++线程的安全性和时间效率:为什么有互斥检查的线程有时比没有它的线程工作得更快
- 从另一个(非 qt)线程调用 QObject 方法的线程安全性?
- C 共享_ptr如何确保线程安全性
- 编写std::vector与普通数组的线程安全性
- C++标准库容器相对于所包含对象的线程安全性
- 读取和写入操作的线程安全性C++
- Qt库-静态成员函数的线程安全性
- QObject可重入性和线程安全性
- std::map中的线程安全性
- boost::asio io_service 和 std::containers 的线程安全性