セマフォ、イベント、クリティカルセクションのどれくらいの同期オブジェクトが1つのマシン上で処理でき、すべてのプロセスが使用できるかには限界があります。この制限は正確に何ですか?Windowsでは、プロセスごとおよびマシンごとにいくつの同期オブジェクトを使用できますか?
答えて
ウィンドウの場合、カーネルハンドル(セマフォ、イベント、mutex)のプロセスごとの制限は2^24
です。 MSDNから
:
カーネルオブジェクトのハンドルは、プロセス 固有のものです。つまり、プロセスは オブジェクトを作成するか、 既存オブジェクトを開いてカーネル オブジェクトハンドルを取得する必要があります。カーネルハンドル上のプロセス単位の制限 は、2^24です。ただし、 ハンドルはページプールに格納されます したがって が作成できる実際のハンドル数は利用可能な メモリに基づいています。 が32ビットWindowsで作成できるハンドル数は、 で、2^24より大幅に低くなります。
「2^24より有意に低い」は200になる可能性があり、20kになる可能性があります。私はそのようなステートメントのためにMSDNが大好きです。 – sharptooth
@sharptooth:あなたは何を読もうと思いましたか?それは利用可能なメモリに依存しているので、0から〜2^24までの何でもかまいません... – Mehrdad
これは、プロセスで使用可能なクォータによって異なります。 XPでは10000プロセスに設定されていると思いますが、それは大きくなる可能性があります。私は上限が何であるか分かりません。
もう一度チェックしてください。10000制限はGDIハンドル用であり、カーネルオブジェクト用ではありません。
- 1. Fluent nHibernateおよびNinjectを使用したマルチテナント。テナントごとに1つのデータベース
- 2. ユーザーごとまたはマシンごとのVisual Studioライセンス
- 3. このプロセスをステップごとに説明できますか?
- 4. WinPcapを使用してプロセスごとのネットワークトラフィックを取得できますか?
- 5. プロセスごとにCPUとメモリの使用量を追跡する
- 6. (WiX)マシンごとのインストール用のショートカットファイル
- 7. オブジェクトのインスタンスごとにループを作成できますか?
- 8. Androidでは、プロセスごとまたはシステムごとにガベージコレクションが実行されますか?ログで
- 9. のRails、HAMLについてのご質問、および
- 10. MSTestにテスト実行ごとに新しいプロセスを使用させることができますか?
- 11. サブドメインごとに異なるメールサーバーを使用できますか?
- 12. Windowsのプロセスごとに最大CPU使用率を設定する
- 13. クエリごとにではなく、datacontextごとにeager loadingを定義できますか?
- 14. 要求ごとおよび/またはリソースごとにダウンロードの速度を制御(および先着・ファースト・サーブ待ちのシステムを提供する)
- 15. ノードごとにいくつのシナプスが必要ですか?
- 16. JavaおよびREST Webサービスとの非同期通信はできますか?
- 17. プロジェクトごとまたはモジュールごとに1つのDLL?
- 18. いくつかのマシンでWindowsプロセスの背景自体
- 19. 5秒ごとにAndroidウェブサービスを非同期に呼び出します。
- 20. アプリケーションごとに1つのEventSourceオブジェクトが必要ですか?
- 21. アプリケーションごとにいくつのCouchDBデータベースがありますか?
- 22. SSLはマシンごとまたは接続ごとに設定されています
- 23. 3つのプロセスを同期させようとしないでください
- 24. nodejs同期行ごとに大きなファイルを読み込みますか?
- 25. マシンごとのインストールでHKCUのレジストリキーを削除します
- 26. プロセスごとに異なるランダムシードを持つPythonマルチプロセッシングを使用する
- 27. codemirrorはクラスごとにテキストエリアを見つけることができますか?
- 28. Entity Framework 4、TPH(階層ごとのテーブル)および注釈
- 29. 複数のドッカーの作成(マシンごとに1つ)
- 30. SPROCプロセスの実行ごとに行
これに対する答えは、「質問する必要がある場合は、おそらく間違っている」(http://blogs.msdn.com/oldnewthing/archive/2007/03/01/1775759)。 aspx)。その上限に達することを考えているので質問していないと思うかもしれませんが、間違った理由でGoogle GoLerがここに来る場合は... – eran
私はマルチプロセスアプリケーションを開発し、適切な同期プリミティブを選択する必要があります。私たちはすでにスレッドメッセージキュー(PostThreadMessage()に使用されていた)の容量を使い果たして限界に達し、回避策を講じなければなりませんでした。今回私は事前に尋ねます。 – sharptooth
http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx – Mehrdad