問題タブ [concurrent-processing]
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.
sql - 大量の作業を取得する
最近、私は非常に一般的であると想像していた問題に対処しなければなりませんでした: 処理する行数が多い (100 万以上) データベース テーブルがあり、さまざまなマシン/スレッドでさまざまなプロセッサが実行されている場合、各プロセッサ インスタンスを安全に許可する方法互いに干渉せずに大量の作業 (たとえば 100 項目) を取得するには?
一度にチャンクを取得する理由は、パフォーマンス上の理由からです。各アイテムのデータベースにアクセスしたくありません。
scala - シングルスレッドキューとしての Scala アクター
一部のアクターをキューであるかのように扱うことに関して何らかの制限があるプログラムでアクターを使用したいと思います。たとえば、変更イベントが適用される外部システムと、外部システムのデータのキャッシュがあるとします。だから私は2人の俳優を持っています:
ChangeApplicationActor
CacheActor
の一部として、外部システムのChangeApplicationActor
エンティティに変更を適用するときに、イベントを送信して に同期X
するよう伝えたいと考えています。CacheActor
しかし、私には2つの要件があります。
- には内部状態があり、理想的にはその命令を順番
CacheActor
に処理したいSync
- の同じ値に対する
CacheActor
2 つの命令を含む の受信トレイになってしまった場合、2 番目の命令は無視したいと思います (つまり、 の任意の値に対して保留中の命令は 1 つだけにする必要があります) 。Sync(x)
x
Sync
x
アクターを強制的にシングルスレッドにする方法はありますか? アクターのメールボックスにアクセスして、重複したイベントを削除する方法はありますか? CacheActor
as, um, not an Actorの実装を避けることはできませんか?
php - PHP ページの機能のスパムを防止する
背景: わかりました。ninjawars.net でレガシー BBG を実行しています。フォーム ポストを介して初期化された、プレイヤーが他のプレイヤーに対して実行できる「攻撃」があります。基本的に、状況を単純化して、ページがあるふりをすることができます。それを attack.php と呼び、別の php ページに送信する巨大な「ATTACK」フォーム投稿を持ち、それを accept_attack.php と呼び、2 番目のページが攻撃を実行します。たとえば、他のプレイヤー 1、2、または 3 を倒すとします。サーバーは PHP5、Postgresql、Apache を実行します。
問題点:
- 大きな「ATTACK」ボタンを押して、accept_attack.php に移動すると、更新を 3 回押して、毎回再送信し、3 回続けて攻撃することができます。
- 最初のページの 3 つのタブを開き、各ページで攻撃をヒットすると、プレイヤー 1、2、3 を一度に殺す 3 つの瞬間的な攻撃が発生し、継続的に更新して繰り返すことができます。
- データベースに保存される「最新の攻撃」タイマーを作成しようと試みたにもかかわらず、プレイヤーはおそらく、コピーされた 3 つのタブを十分に同期された方法で更新するだけで、それを回避できるようです。タイマー (例: 10:00:00:0000 am) を取得し、結果の処理を続行します。
必要なソリューション:
では、特定のスクリプトの同じ処理が一度に 3 重に実行されるのを防ぐにはどうすればよいでしょうか。
Php、ソーシャル エンジニアリング、および/または javascript/jQuery ソリューションが推奨されます (おそらくこの順序で)。
編集:答えに基づいて、これを解決するために(おそらく、ストレステストの前に)私がしたことは次のとおりです。セッションの答えは、実装するのが最も簡単/最も理解しやすいように見えたので、そのデータストアを使用しました。私はそれをテストし、うまくいくように見えますが、私が気づいていない方法があるかもしれません.
それを改善する方法、またはそれを悪用できる方法がある場合(エコーすることはロジックの適切な分離ではないことが私には明らかであることを超えて)、私は知りたい. .
python - 複数のページを同時にダウンロードしますか?
各ページが次々とダウンロードされるのを待つのではなく、データベースから URL を取得し、Web ページを同時にダウンロードして高速化できるスクリプトを Python で作成したいと考えています。
このスレッドによると、Python は、同じスクリプトを複数回起動するのを防ぐGlobal Interpreter Lockと呼ばれるもののため、これを許可していません。
Twisted フレームワークの学習に時間を費やす前に、上記で行う必要があることを行うためのより簡単な方法がないことを確認したいと思います。
ヒントをありがとう。
c# - BackgroundWorker を使用した C# の同時スレッド
私の C# アプリケーションでは、バックグラウンド ワーカーを使用して、送信されたデータの確認応答を待機しています。これは、私がやろうとしていることを示す疑似コードです。
何が起こるかというと、ACK BackgroundWorker がタイムアウトになり、確認がまったく受信されません。そのデバイスはまったく変更されておらず、C# アプリケーションが送信しているため、リモート デバイスによって送信されていることはほぼ確実です。私はこれからackスレッドを変更しました(それが機能していたとき)...
...これに...
後者は、前者と比較して、非常に正確な待ち時間を生成します。ただし、スリープ機能を削除したことで、シリアル データの受信に支障が出ているのではないかと考えています。C# では一度に 1 つのスレッドしか実行できませんか? つまり、他のスレッドを実行できるようにするために、ある時点でスレッドをスリープ状態にする必要がありますか?
ご意見やご提案をいただければ幸いです。Microsoft Visual C# 2008 Express Edition を使用しています。ありがとう。
c# - C# での BackgroundWorker2_RunWorkerCompleted からの無効なクロススレッド操作
意味をなさないエラーが発生しています。
Cross-thread operation not valid: Control 'buttonOpenFile' accessed from a thread other than the thread it was created on.
私のアプリケーションでは、UI スレッドが発火しbackgroundWorker1
、ほぼ完了すると発火し、完了するbackgroundWorker2
のを待ちます。 完了する前に完了する backgroundWorker1
のを待ちます。変数は、各ワーカーが完了したときにフラグを立てるために使用されます。フォーム コントロールをリセットする関数が呼び出されます。例外がスローされるのは、この関数内です。関数内のフォーム コントロールを変更しても安全だと思いました。両方のバックグラウンド ワーカーは、UI スレッドからインスタンス化されます。これが私がやっていることの非常に要約されたバージョンです:backgroundWorker2
AutoResetEvent
backgroundWorker2_RunWorkerComplete
ResetFormControls()
RunWorkerCompleted
ご意見やご提案をいただければ幸いです。Microsoft Visual C# 2008 Express Edition を使用しています。ありがとう。