<semaphore.h>
と<sys/sem.h>
に含まれる機能の違いは何ですか? ヘッダーなどを使用する方がよい場合がありますか?<semaphore.h>との相違点<sys/sem.h>
答えて
<sys/sem.h>
は、XSI(もともとのUnix System V)セマフォのインタフェースを提供します。これらは基本的なPOSIX標準の一部ではありません(XSIオプションに含まれていますが、これは主に従来のUnixとの互換性のためです)、廃止予定/推奨されていないと考えられているプログラマも多く、POSIXは推奨していないと考えています。
アプリケーションの用途
POSIX Realtime Extensionは、プロセス間通信用の代替インタフェースを定義しています。 IPCを使用する必要があるアプリケーション開発者は、XSIプロセス間通信で説明したIPCルーチンを使用するモジュールを代替インターフェイスを使用するように簡単に変更できるように、アプリケーションを設計する必要があります。
XSIセマフォのメリットとデメリットは、インターフェイスがカーネル空間オブジェクトとして動作するためであることです。これがもたらす主な利点は、プロセスが終了した場合や予期せず終了した場合にカーネルが操作を取り消すことができるように、それらを設定できることです。主なコストは、すべての操作がカーネル空間へのラウンドトリップである、すなわち非常に遅いということです。それらを使用するためのインターフェイスも非常に鈍く学習するのが難しく、必然的にプロセス共有リソースです。つまり、共有名前空間とリソースクリーンアップの問題に対処する必要があります。
<semaphore.h>
は、プロセスがスリープ状態になるためにカーネルを呼び出す場合を除いて、ユーザー空間で完全に実装できるように設計されたPOSIXセマフォを定義します。それらのパフォーマンスは、最適なものに近いものでなければなりません(つまり、自分自身を叩くことはほとんど不可能です)が、XSIセマフォほど機能的ではありません。 POSIXセマフォには、プロセスローカルセマフォ(マルチスレッド環境で使用する場合、場合によってはシングルスレッドプログラムのシグナルハンドラ)やプロセス共有セマフォを使用するかどうか、後者の場合は、システムが名前で共有名前空間に割り当てを処理するようにするか、共有メモリーを自分で取得して共有メモリーで初期化するかを選択できます。
これらは、互いに同じではなく、2つの異なる実装であり、異なる機能セットを提供します。 semaphore.h
はPOSIX実装で、sys/sem.h
はsysVの実装です。 POSIXはconsideredで、軽量で広く使用されています。
- 1. <a>タグとgetの相違点
- 2. <s:property ..>と$ {param}の相違点
- 3. LinkedList <?>とLinkedListの相違点<Object>
- 4. ストリーム "<<"と書き込みの相違点
- 5. std :: is_signedの相違点<T>とstd :: numeric_limits <T> :: is_signed?
- 6. ArrayList <>()とArrayList <>(){}の相違点
- 7. 「<seg>」と「<span>」の相違点
- 8. の相違点<textview></textview>対<textview />
- 9. アクションとの相違点<T>とパラメータとしてのプレーンラムダ
- 10. <meta name = "title">タグの相違点<title></title>タグ
- 11. 標準<memory>ファイルのboost :: shared_ptrとstd :: shared_ptrの相違点
- 12. GetInstance <t>とNew tの相違点
- 13. if(args.Length <1)とif(args.Length == 0 || args == null)の相違点
- 14. 地図と地図の相違点<K,V>インターフェース
- 15. std :: mutexロック関数とstd :: lock_guardの相違点<std::mutex>?
- 16. IE標準、相違点および相違点の相違点
- 17. importとconstとの相違点とcommonjsでの相違点
- 18. =と:=の相違点
- 19. PHPUnitとPHPSpecの相違点と相違点
- 20. リスト<String>リストと新しいリストとの間の相違点<String>とArrayList <String> list = new ArrayList <String>?
- 21. 配列<T>と配列の相違点<T^>ここでTは値の型です
- 22. CBUUIDとNSUUIDの相違点
- 23. NSTimeZoneとGMTの相違点
- 24. ListViewとArrayListの相違点
- 25. pictureBox.Update()とpictureBox.Refresh()の相違点
- 26. ApplicationContextInitializerとBeanFactoryPostProcessorの相違点
- 27. システムとshell_execの相違点
- 28. AsyncSocketとAsyncUdpSocketの相違点
- 29. .textと.get_text()の相違点
- 30. plt.close()とplt.clf()の相違点