10

2008 年のこの電子メールを除いて、V4L2 のスレッド セーフ特性についての言及は見つかりませんでした。それは大きなカーネルロックについて語っていますが、今はなくなっていると思いますよね?

これに関する最新情報を持っている人はいますか?シリアル化せずに複数のスレッドから同じ V4L2 ファイル記述子をioctl(特に考えているVIDIOC_DQBUF)ことはできますか? VIDIOC_QBUF上記の議論は、答えがドライバーに依存していることを示しているようですが、とにかく尋ねてみようと思いました。

4

1 に答える 1

4

仕様では、V4L2 がスレッドセーフかどうかについて言及されていません。ただし、一部の実装は実際にはスレッドセーフであるようです。

POSIX.1-2001 および POSIX.1-2008 では、一部の特定の関数を除き、標準で指定されているすべての関数がスレッドセーフであることを要求しています。ioctl() はそれらの 1 つではないため、スレッドセーフです。ただし、ioctl() はキャンセル ポイントであるため、ioctl() に到達するとスレッドを終了できます。

正しい解決策は、V4L2 がスレッドセーフではないと想定し、それに応じてロックを行うことだと思います。

于 2012-04-26T15:16:18.253 に答える