問題タブ [shared-memory]

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.

0 投票する
3 に答える
2174 参照

c - C/C++ で別のスレッドのスタックに書き込むにはどうすればよいですか?

私はこれが悪い考えであることを知っています!確かに、安全なプログラミングのために、特定のスレッドのスタックはそのスレッドに対してプライベートであると見なされるべきです。しかし、少なくとも POSIX は、スレッドのすべてのメモリが他のスレッドによって共有され、書き込み可能であることを保証します。これは、あるスレッドのスタックが (理論的には) 別のスレッドによって書き込まれる可能性があることを意味します。だから、どうやってそれができるのか興味があります。

私が考えることができる唯一の方法は、スレッド B のローカル変数のアドレスをスレッド A に渡し、A にその一般領域への書き込みを開始させることです。しかし、これは C での関数呼び出しを完全にエミュレートするものではありません。特に、プログラム カウンターがパラメーターを取る関数の最初の行に設定されている間、スレッド A をスリープ状態にしてから、スレッド B をスリープ状態にすることができるかどうかに興味があります。実際にそれらのパラメーターをスタックにプッシュしてから、スレッド A を再開し、スレッド A でそれらのパラメーターを使用して関数が最初に呼び出されたかのように実行します。これには、スレッド B が少なくとも x86 呼び出し規約の下でスレッド A のレジスタにアクセスできる必要があると思いますが、それが可能かどうかはわかりません。

0 投票する
2 に答える
5509 参照

c - C で共有メモリへのアクセスを作成する

だから、どうしたらいいのかわからないという問題があります。対処方法を教えていただければ幸いです。

共有メモリに N 個のバッファを割り当てる必要があります。各バッファは 0 に初期化する必要があります。次に、N/2 個の子プロセスをフォークする必要があります。

次に、各子 (i) は値 (i) をバッファー (i) に書き込み、1 秒間スリープします。次に、現在のバッファの値を読み取り、その間に値が変更された場合はメッセージを表示します。次に、子は i 位置を N/2 回移動します。


これをどのように行うべきかについてのアイデアはありますか?

  • N 個の整数の配列を作成することはできますか? すべての子が同じ要素にアクセスするので、これは問題になりますか?
0 投票する
4 に答える
19727 参照

c - Cの共有メモリにintと配列をどのように保持しますか?

Linux で子プロセスが相互に通信するプログラムを作成しようとしています。

これらのプロセスはすべて同じプログラムから作成されるため、コードを共有します。

2 つの整数変数と整数配列にアクセスできるようにする必要があります。

共有メモリがどのように機能するかはわかりません。検索したすべてのリソースは、私を混乱させるだけでした。

どんな助けでも大歓迎です!

編集: これは、1 つの int を共有するためだけにこれまでに作成したコードの例ですが、おそらく間違っています。

0 投票する
4 に答える
47033 参照

python - PythonマルチプロセッシングでPool.mapを共有メモリ配列と組み合わせる

複数のプロセスで並行して処理したいデータの非常に大きな(読み取り専用)配列があります。

私はこのPool.map関数が好きで、それを使用してそのデータの関数を並行して計算したいと思います。

ValueまたはArrayクラスを使用して、プロセス間で共有メモリデータを使用できることを確認しました。しかし、これを使おうとするとRuntimeError: 'SynchronizedString objects should only be shared between processes through inheritance、Pool.map関数を使用すると次のようになります。

これが私がやろうとしていることの簡単な例です:

誰かが私がここで間違っていることを教えてもらえますか?

したがって、私がやりたいのは、プロセスプールで作成された後、新しく作成された共有メモリに割り当てられた配列に関する情報をプロセスに渡すことです。

0 投票する
1 に答える
2007 参照

c - IPC メッセージ キュー。msgrcv システムコール。システム V. ループから抜け出す方法

ループ内でメッセージを取得するメッセージ キューがあります。問題は、ループを終了する方法がわからないことです。msgrcv は size_t 型を返すため、続行します。ループを終了するには、戻り値とどの値を比較すればよいですか?

0 投票する
4 に答える
1578 参照

php - 共有メモリから取得するときにPHPは変数をコピーしますか?

shm_get_var() を実行すると、「参照」が返され、共有メモリにデータが保持されますか?

この 50MB 配列の複数のコピーをぶらぶらさせずに複数のプロセスで使用できるように、共有メモリに約 50MB のサイズの配列を保持したいと考えています。共有メモリが答えではない場合、誰か別のアイデアがありますか?

0 投票する
5 に答える
11303 参照

c++ - 1 人のユーザーがクラッシュしたときの共有メモリ内のミューテックス?

プロセスが共有メモリにミューテックスを作成してロックし、ミューテックスがロックされている間にコアをダンプするとします。

別のプロセスで、ミューテックスがすでにロックされているがどのプロセスにも所有されていないことを検出するにはどうすればよいですか?

0 投票する
2 に答える
245 参照

shared-memory - データベーステーブルから共有メモリへのデータのロード

データベースから共有メモリにデータをロードすることについてのアイデアはありますか?アイデアは、頻繁に使用されるテーブルからのデータ取得を高速化することですか?