2012-04-18 9 views
8

Ich konnte die Fadensicherheitseigenschaften von V4L2, außer this e-mail from 2008, nicht nennen. Es spricht von der großen Kernel-Sperre, von der ich denke, dass sie jetzt weg ist, oder?Wie threadsicher ist V4L2?

Hat jemand aktualisierte Informationen dazu? Kann ich ioctl (ich denke besonders über VIDIOC_DQBUF und VIDIOC_QBUF) der gleiche V4L2 Dateideskriptor aus mehreren Threads ohne Serialisierung? Die oben erwähnte Diskussion scheint darauf hinzudeuten, dass die Antwort vom Fahrer abhängt, aber ich dachte, ich würde trotzdem fragen.

Antwort

2

Die Spezifikation erwähnt nicht, ob V4L2 Thread-sicher ist. Es scheint jedoch, dass einige Implementierungen tatsächlich threadsicher sind.

POSIX.1-2001 und POSIX.1-2008 erfordern, dass alle in der Norm spezifizierten Funktionen threadsicher sind, mit Ausnahme einiger spezifischer Funktionen. ioctl() gehört nicht dazu, also ist es Thread-sicher. ioctl() ist jedoch ein Löschpunkt, sodass der Thread beendet werden kann, sobald er ioctl() erreicht.

Ich denke, dass die richtige Lösung ist anzunehmen, dass V4L2 nicht Thread-Safe ist und die Verriegelung entsprechend vornehmen.

+1

Danke! Habe einige Kopfgeldpunkte. – gspr