Linuxには、win32の重要なセクションに対応するLinux用のライブラリがありますか?
ミューテックスについて知っていますが、重要なセクションは、ユーザーモードのスピンロックとイベントオブジェクトを内部的に使用し、ミューテックスよりも高速である必要があるため、重要なセクションとは異なります。
答え1
カーネル空間で何かをしたい場合は、セマフォ(sem_overview(7)
)を調べることをお勧めします。 「イベント」、「条件」、「ミューテックス」(「重要なセクション」)などのセマフォでより高いレベルの構造を構築できます。 C には、古いインターフェイスと最新のインターフェイスがあります。一部の高度な言語(PythonやPerlなど)もこのインターフェイスを公開しています。
おそらくあなたが言う「ミューテックス」はpthreadのミューテックスです。〜するユーザースペース、特に非常に低いレベルのOSレベル構成用に設計されたスピンロックを使用するスペースよりも高速です。 pthreadの一部の実装では、オペレーティングシステムレベルを使用しsemaphore
たり、他の設定を使用したりできます。
答え2
Linuxでは、POSIX mutexはNPTLの一部であるfutex(2)と呼ばれる特別なカーネルツールで実装されています。これは、スレッドが中断する必要がある場合にのみカーネルスペースに閉じ込められるか、単なるユーザースペース機能にすぎません。
スピンロックは非常に簡単で、カーネルの介入はまったく必要ありません。 __sync_bool_compare_and_swap() などを使って簡単に設定できます。 Glibcはman pthread_spin_init - 理由のためにスピンロックを実装していますが、スピンロックは常に思ったほど「高速」ではありません。