Linuxの重要なセクション

Linuxの重要なセクション

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 - 理由のためにスピンロックを実装していますが、スピンロックは常に思ったほど「高速」ではありません。

関連情報