問題タブ [flock]
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.
c - flock(): 競合状態なしでロックされたファイルを削除しますか?
プロセス間の名前付きミューテックスに flock() を使用しています (つまり、一部のプロセスは、一時ディレクトリ内の「some_name」という名前のファイルをロックすることによって実装される「some_name」のロックを保持することを決定できます。
ロック ファイルは、一時ディレクトリが何百ものファイルでいっぱいになるのを避けるために、ある時点で削除する必要があります。
ただし、このコードには明らかな競合状態があります。プロセス A、B、C の例:
この競合状態を導入することなく、ある時点でロック ファイルを削除する方法はありますか?
lua - Lua Separation Steering アルゴリズムは、重なり合う部屋を 1 つのコーナーにグループ化します
互いにオーバーラップする乱数のセルを生成するダンジョン生成アルゴリズム (ここで提示され、ここでデモ)を実装しようとしています。次に、細胞は押し離されて/分離されてから接続されます。ここで、元のポスター/著者は、領域全体にセルを均一に分散させるために分離ステアリングアルゴリズムを使用していると説明しました。群れのアルゴリズムや分離ステアリングの動作についてあまり経験がなかったため、説明を求めてグーグルに目を向けました(そしてこれを見つけました)。私の実装(最後に述べた記事に基づく)は次のとおりです。
self._rooms は、グリッド内の部屋の元の X および Y 位置と、その幅と高さ (endX、endY) を含むテーブルです。
問題は、セルをグリッド上にきちんと配置する代わりに、重なっているセルを取得して、それらを 1,1 から距離 +2、距離 +2 の領域に移動することです (私のビデオ [youtube] で見られるように) 。
なぜこれが起こっているのかを理解しようとしています。
必要に応じて、ここでグリッド テーブルを解析し、分離後にセルを分離して塗りつぶします。
linux - ポーリングせずに flock/lockf/fcntl の変更について通知を受ける
ポーリングせずにファイルのロック状態の更新を (Linux で) 取得する方法はありますか?
lockf(fd, F_TEST) または投機的な LOCK_NB|LOCK_SH を介してステータスをポーリングできることは知っていますが、ポーリングは悪いです(tm)。
もちろん、ファイルがロックされていない場合は単純なロック試行で確認できますが、他のエッジもサンプリングしたい (ユースケース: (大規模な) プログラムが lockf を使用してインスタンス間を同期する - おそらく取得できるそれは群れに変わりました。もちろん、ロックを占有していない間は、ロックが取得可能になったときに表示される GUI を追加したいと考えています)。
この場合、少なくとも Linux 3.9.1 では inotify が機能しないことに注意してください。
perl - flock: sysopen で切り捨てる正しい方法
これら 3 つのバージョンは同等ですか?
php - PHPでflockを使用してshell_execを実行する
flock 関数を使用してシェル スクリプトを実行しようとするコードがありますが、シェル スクリプトが flock の下にあると実行されないようです。コードは次のとおりです。
..のshell_exec()
外側を移動すると機能します。flock()
私はそれを間違っていますか?fopen を r+,x+,a+.. で実行しようとしましたが、それでも動作しません。
どんな助けでも大歓迎です!
linux - flock へのブロッキング呼び出しが失敗するのはいつですか?
私はflockについて読んでいました。例には次の行があります。
flock($fh, LOCK_EX) or die "Cannot lock mailbox - $!\n";
この呼び出しはブロッキング呼び出しですよね? したがって、ロックがすでに取得されている場合、呼び出しはブロックされます。
呼び出しが返された場合、ロックが許可されていると思います。それで、いつdie
起こるでしょうか?
zsh - zsh: flock を使用して、新しいプロセスを開始せずに if then ステートメントを実行します。
zshスクリプトでこのようなことをしたい
残念ながら、そのあたりで解析エラーが発生します。これを同じプロセスで実行したいので、
問題外です。