架构师_程序员_码农网

ユーザー名 パスワード取得
会員登録

QQ登录

ワンステップ

検索
閲覧:7305|返信: 2
打印 上一主题 下一主题

[NET/C# SemaphoreSlimを使って同時実行を制限する方法

[NET/C#でSemaphoreSlimを使って同時実行を制限する]。
NB:何と言っていいかわからない。
跳转到指定楼层
オーナー
要件:ハードウェアリソースが限られているように、プログラムの操作は、高連続性の場合には、特定のハードウェアリソースを消費する必要があり、あまりにも多くのリソースを占有するメソッドのいくつかのプログラムが制限されていない場合(Excelの表にエクスポートされた大量のデータになります)、プログラム全体に影響を与える可能性があります正常なサービスを提供することはできませんが、また、オペレーティングシステムの正常な動作に影響を与える、本稿では、同時呼び出しを制限するためにSemaphoreSlim信号量を使用しています。この記事では、SemaphoreSlim信号を使用して、同時呼び出しの数を制限する。

SemaphoreとSemaphoreSlimの違い

SemaphoreSlimとSemaphoreは機能的に似ており、SemaphoreSlimはSemaphoreより約4倍高速ですが、SemaphoreSlimはプロセス間シグナリングには使えません。

この性能向上の理由は、SemaphoreSlimクラスがWindowsカーネルシグナルを使用しないSemaphoreクラスの軽量な代替を提供するからです。基本的に、名前付きシグナルが必要ない場合は、SemaphoreSlimクラスを使用してください。

SemaphoreSlimはSpinWaitとMonitorに基づいているため、ロックの取得を待つスレッドは、他のスレッドに道を譲る前にロックを取得することを期待してCPUサイクルを一定期間消費します。もしそれが起こらなかった場合、スレッドはシステムにコンテキストを切り替えさせ、OSがスレッドを再びスケジュールしたときに(CPUサイクルを消費して)再挑戦する。待ち時間が長い場合、このパターンは多くのCPUサイクルを消費する可能性がある。したがって、この実装の最良のシナリオは、ほとんどの場合待ち時間がなく、ほとんど即座にロックを取得できることである。
セマフォはOSカーネル内の実装に依存しているため、ロックを取得するたびにかなりのCPUサイクルを消費しますが、その後はロックを取得するのに必要な時間だけスレッドが休止するだけです。

セマフォのドキュメント: https://docs.microsoft.com/en-us ... aphore?view=net-6.0
SemaphoreSlimのドキュメント: https://docs.microsoft.com/en-us ... reslim?view=net-6.0

メソッドを実行する前に、よく使われるwaitメソッドを以下に示しますので、実際の業務の状況に応じて呼び出してください!

Wait():SemaphoreSlimにアクセスできるようになるまでスレッドをブロックします。
Wait(0):このメソッドはブロックしません。 Waitハンドルの状態をテストし、すぐに戻ります。
Wait(正整数): 現在のスレッドがSemaphoreSlimに入るまでブロックし、タイムアウトを指定するために32ビットの符号付き整数を使用します。

ソースコードは以下の通り:

レンダリングは以下のとおりです:







前の記事:Linuxのパスワードレスログイン(ssh)やパスワードレスコピー(scp)で他のサーバーにファイルをコピーする
次の記事:[実践]LinuxのlookbusyシミュレーションCPU占有率
コード農家のネットワークは、唯一の練習の過程で公開され、技術的な困難に遭遇し、他の人を誤解させないでください。
|にできるようにあなたがそれをすることができます本当に出くわすことあなたは、実際にはエキサイティ
投稿日時:2022-2-19 23:16:57作者のみ表示
|にできるようにあなたがそれをすることができます本当に出くわすことあなたは、実際には私たち約束、誰でも素早くはちょうど無視これらの一見正確にどのように{}人のことを忘れることができます。
コード農家ネットワーク、唯一の練習の過程で公開、技術的な困難に遭遇した、他の人を誤解させないでください。
ベンチ
发表于2022-2-20 22:19:24|只看该作者
テスト
コード農家ネットワークは、唯一の練習の過程で公開され、技術的な困難に遭遇し、他の人を誤解させないでください。
投稿するにはログインが必要です ログイン会員登録

このバージョンのインテグラルルール


免責事項:コードファーマーネットワークによってリリースされたすべてのソフトウェア、プログラミング資料や記事は、学習や研究目的に限定され、商業的または違法な目的のために使用してはならない、そうでなければ、すべての結果は、ユーザーが責任をお願いします。このサイトの情報は、ネットワークから、著作権紛争は、このサイトとは何の関係もありません。あなたは完全にダウンロードしてから24時間以内にコンピュータから上記のコンテンツを削除する必要があります。あなたがプログラムを好きなら、本物のソフトウェアをサポートしてください、登録を購入し、より良い本物のサービスを得る。もし著作権侵害があれば、メールでご連絡ください。

メール To:help@itsvse.com

QQ|( 鲁ICP备14021824 号-2)|サイトマップ

GMT+8, 2024-9-19 04:15

クイック返信トップに戻る一覧に戻る