2
私はpthread_mutex_tの実装が多いことを理解していますが、標準が十分であり、異なるpthreadライブラリ間でpthread_mutex_tを共有して正しく動作させることができるかどうかを知りたいと思います。異なるライブラリからのPosixに準拠したpthread_mutex_tは互いに互換性がありますか?
私はpthread_mutex_tの実装が多いことを理解していますが、標準が十分であり、異なるpthreadライブラリ間でpthread_mutex_tを共有して正しく動作させることができるかどうかを知りたいと思います。異なるライブラリからのPosixに準拠したpthread_mutex_tは互いに互換性がありますか?
いいえ、互換性のために調整されている場合にのみ、いいえ、私は誰とも思わないです。
これは、1つのC実装でも発生する可能性があります。glibcはバージョン間で互換性がなく、32ビット版と64ビット版のレイアウトが異なります。形式では、静的イニシャライザ(PTHREAD_MUTEX_INITIALIZER
とその亜種)を持つ既存のバイナリが動作し続ける必要がありますが、実行時に発生するものは修正されず、バグの修正や最適化によって変更される可能性があります。一方、静的イニシャライザの互換性要件により、残念ながら32ビット/ 64ビットの不一致を修正することが困難になります。