問題タブ [locking]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python:Windowsでディレクトリアクセスをロックする
Windowsでディレクトリアクセスをロックできるようにしたいのですが。次のコードは、POSIXシステムのファイルまたはディレクトリで大いに機能します。
しかし、私は次のコードでディレクトリではなく、ファイルのロックアクセスを実行する方法を見つけるだけです:
このコードを改善し、ディレクトリアクセスをロックできるようにする方法を知っていますか?
ベルトラン
c# - マルチスレッド コードで読み取るときに .NET Int32 をロックする必要がありますか?
私は次の記事を読んでいまし た 。
「マルチスレッド コードで .NET Int32 を読み取るときに、.NET Int32 をロックする必要がありますか?」
記事で説明されているように、それが 32 ビット SO の Int64 である場合、破損する可能性があることを理解しています。しかし、Int32 の場合、次の状況を想像しました。
Read メソッドにロックを含める理由がわかりません。あなたは?
更新(Jon Skeet および ctacke による) 回答に基づいて、上記のコードがマルチプロセッサ キャッシュに対して依然として脆弱であることを理解しています (各プロセッサには独自のキャッシュがあり、他のプロセッサとは同期されていません)。以下の 3 つの変更はすべて、問題を修正します。
- 「int example」に「volatile」プロパティを追加する
- Thread.MemoryBarrier(); の挿入 「int example」を実際に読む前に
- 「lock(thisLock)」内の「int example」を読む
また、「揮発性」が最もエレガントなソリューションだと思います。
c# - ReaderWriterLockSlim と Monitor の比較
IDictionary<TKey,TValue>
内部でn個のその他Dictionary<TKey, TValue>
を保持し、その挿入をキーのHashCodeによって個々のサブ辞書に配布する実装があります。16 個のサブディクショナリがあるため、4 コア マシンでの衝突の数はかなり少なくなります。
並列挿入の場合、 Add メソッドをReaderWriterLockSlim
でロックし、個々のサブ辞書のみをロックします。
4 つのスレッドで項目を挿入すると、約 32% の CPU 使用率しか得られず、パフォーマンスが低下しました。そこで、ReaderWriterLockSlim を Monitor (つまり、lock
キーワード) に置き換えました。CPU 使用率はほぼ 100% になり、パフォーマンスは 2 倍以上になりました。
私の質問は、CPU 使用率が増加したのはなぜですか? 衝突の数は変わっていないはずです。ReaderWriterLock.EnterWriteLock が何度も待たされるのはなぜですか?
c# - 一般的な辞書をロックできますか?
それとも、常に他のロック オブジェクトを作成する必要がありますか?
c# - 値型を適切にロックする方法は?
私はスレッド化とロックについて読んでいました。値型をロックできない(そうすべきではない)のが一般的な方法です。
だから問題は、値型をロックするための推奨される方法は何ですか?1つのことを行うにはいくつかの方法があることは知っていますが、例は見ていません。MSDNフォーラムには良いスレッドがありましたが、今はそれを見つけることができないようです。
ありがとう
sql-server-2008 - Web アプリケーション用の SQL Server 2008 のチューニング
Stackoverflow ポッドキャストの 1 つで、Jeff Atwood が、SQL Server 2008 にはロックを削減する構成オプションがあり、すべてのクエリで "with (nolock)" を使用する代わりのようなものだと言ったことを覚えています。彼が話していた機能を有効にする方法を知っている人はいますか? おそらくジェフ自身でさえも. SQL Server 2008 の展開を検討しており、このような機能を使用することが Web アプリケーションに役立つかどうかを確認したいと考えています。
c# - ASP.NET アプリケーションでのファイル ロック (読み取り/書き込み)
2 つの ASP.NET Web アプリケーションがあります。1 つは情報の処理とログ ファイルへの書き込みを担当し、もう 1 つのアプリケーションはログ ファイルの読み取りを担当し、ユーザーの要求に基づいて情報を表示します。
これがライターの私のコードです
そして、これが Reader の私のコードです:
私の質問は、上記のコードは Web ガーデン環境でのロックを防ぐのに十分ですか?
EDIT 1:ダーティリードは大丈夫です。 編集 2:新しい Mutex(false, "LogFileMutex") で Mutex を作成し、StreamWriter を閉じる
c# - C# の同時実行、ロック、および辞書オブジェクト
DB オブジェクトにロードされる一連の DB エンティティがあります。同じ DB エンティティが複数の DB オブジェクトにロードされる場合があります。定期的に、DB エンティティには特別な処理が必要になります。この処理は、一度に 1 つのスレッドで実行する必要があります。ここでロックがかかります。
編集: 重要な注意: プロセスは低速の Web サービスを呼び出します。これは、同時実行を防止しようとしているものです。ロックなしでこれを安全に行う方法がわかりません。
そこで、DB オブジェクトがロックのために参照する「南京錠」オブジェクトを作成します。南京錠オブジェクトはエンティティ ベースであるため、同じエンティティの 2 つ以上の DB オブジェクトが同じ南京錠オブジェクトを使用します。DB エンティティの ID をキーとして使用して、これらの南京錠をディクショナリ オブジェクトに格納しています。南京錠オブジェクトも単純な文字列オブジェクトです。これは正しいアプローチですか?私は、これをエンジニアリングまたは単純化していると考えています。アプローチが正しければ、このコードはどのように見えるでしょうか? 動作しますが、まだ負荷をかけた状態でテストしていません。
ありがとう :)
sql-server-2005 - SQL 2005: NOLOCK ヒントにより読み取りが劇的に増加します。なんてこと?
NOLOCK ヒントがクエリに追加されると、より多くの読み取りを行うストアド プロシージャがあります。私は困惑しています - 理由を知っている人はいますか?
詳細: クエリは次のとおりです。
40,000回の読み取りを行っていましたが、2,000行未満です。これらの読み取りのほとんどは、3 つの TEXT 列が原因であることがわかりました。(それらを省略すると、59 回の読み取りに減少します!) しかし、WITH (NOLOCK) を削除すると、40,000 回の読み取りから 13,000 回に減少します。私は失敗したに違いないと思ったので、これを数回繰り返しましたが、両方の方法で本当に一貫しています。
c# - C#.NET で既存の XML ファイルの内容を置き換えるにはどうすればよいですか?
C#.NET で XML ファイルのコンテンツを次のようなスニペットに置き換えようとすると、次のようになります。
... ファイルが別のプロセスによって既に開かれていることを示す System.IO.IOException が発生します。