問題タブ [processors]
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.
multithreading - 複数の CPU での複数のプロセス 同じデータの読み取りと書き込み
私は現在並行性を研究していますが、いくつか疑問があります。
ウィキの例を見てみましょう。 http://en.wikipedia.org/wiki/Atomic_(computer_science)
素朴で非アトミックな方法では、値を読み取り、1 を加算してから書き戻します。2 つのプロセスが同時に実行されている場合、ステップが互いにインターリーブすることがあります。たとえば、最初のプロセスは 1 を読み取って追加しますが、中断されます。2 番目のプロセスは読み取り、1 の追加、および書き戻しを行い、中断されます。最初のプロセスが再開され、古い値が書き戻されます。
アトミックな比較と交換がどのように問題を解決するかを理解しています。読み取り、1 を追加し、比較とスワップを使用して書き込み、比較とスワップが失敗した場合は再試行します。
ただし、複数のスレッドを実行する複数のコアがあるシナリオを想像しています。1 番目のプロセスと 2 番目のプロセスが異なるコアでまったく同時に実行されるとどうなりますか? つまり、CPU1 の Process1 は、読み取り、追加、比較および交換を行い、同時に CPU2 の Process2 は読み取り、追加、比較および交換を行います。コンペアアンドスワップも成功すると思います。
この状況は可能ですか?もしそうなら、それはどのように扱われますか?
symfony - Monolog プロセッサが Symfony で動作しない
Symfony で Monolog プロセッサを使用したいのですが、monolog はプロセッサを使用していないようです。
ここに私のconfig_dev.yml関連の抜粋があります:
UserInfoProcessor.php は次のとおりです。
コンストラクターでログと例外を試したことがわかりますが、結果がありません。そのため、Monolog はプロセッサを使用していないと思います。PsrLog も機能しません。
フォーマッタはうまく機能します。
提案/手がかりはありますか?
どうもありがとう :)
multithreading - マルチスレッド アプリケーションは、シングルスレッド アプリケーションより実際に高速ですか?
すべては完全に理論的なものであり、質問が頭に浮かんだだけで、答えが何であるかは完全にはわかりませんでした:
4 つの独立した計算を計算するアプリケーションがあるとします。(完全に独立しており、どの順序で実行しても問題ありません。別の計算を行う必要はありません)。また、これらの計算は長時間 (分) であり、CPU バウンド (いかなる種類の IO も待機していない) であると仮定します。
1) ここで、1 プロセッサのコンピューターを使用している場合、シングル スレッド アプリケーションはマルチスレッド アプリケーションよりも論理的に高速になります (または同じです)。コンピュータは 1 つのプロセッサで一度に複数のことを実行できないため、コンテキストの切り替えなどで時間を「無駄」にします。ここまでは順調ですね?
2) 4 プロセッサのコンピュータを使用している場合、4スレッドの方がシングル スレッドよりも高速です。右?コンピューターは一度に 4 つの操作を実行できるようになったため、アプリケーションを 4 つのスレッドに分割するのは論理的であり、4 つの計算のうち最長の時間で完了するはずです。ここまではまだいいの?
3) そして今、私が混乱している実際の部分 - 利用可能なプロセッサ (実際には - コア) の数よりも多くのスレッドをアプリケーションに作成させるのはなぜですか? 私はプログラムを作成し、数十から数百のスレッドを作成するアプリケーションを見てきましたが、実際には、平均的なコンピューターの場合、完璧な数は約 8 でしょうか?
PS私はすでにこれを読んでいます:スレッド対シングルスレッド ですが、静かに答えませんでした。
乾杯
windows - Windows がプロセッサ間でプロセスを切り替えるのはなぜですか?
シングル スレッド プロセスがビジーで、シングル コアを 100% 使用している場合、Windows がこのプロセスをコア間で切り替えているように見えます。タスク マネージャーのコアの概要では、すべてのコアが均等に使用されているためです。
なぜWindowsはそうするのですか?これは L1/L2 キャッシュを破壊していませんか?
java - Scala: リポジトリ sistanlp/processors を使用するにはどうすればよいですか?
次のリポジトリを使用しようとすると、多くの問題が発生します: https://github.com/sistanlp/processors
私はすでにScalaとJavaをインストールしています。Stanford CoreNLP を入手しましたが、正しくセットアップしたかどうかわかりません。
上記のリポジトリから取得した「processors」ファイル内の build.sbt ファイルを使用して、「sbt compile」と「sbt assembly」を実行しました。いくつかの警告が表示されましたが、機能しているように見えました。
見つかったすべての .jar ファイルを、ターゲット フォルダー内のクラス フォルダーに移動しました。
ここからの指示に従いました: http://www.codecommit.com/blog/scala/joint-compilation-of-scala-and-java-sources sistanlp/processors リポジトリ (最後のコードreadme の例)、次のように入力しました。
しかし、エラー、特に次のエラーが発生しました。
アイデアがありません...プロセッサリポジトリやStandford CoreNLPなど、おそらく何かを間違って設定しましたが、何が間違っていたのかわかりません。
spring - 春のバッチでリーダーを制御するリモートチャンク
春のバッチを使用してファイルを読み取り、コンテンツをバッチで処理する必要があります。リモートチャンクを使用することを考えましたが、実際の要件を満たしていません。以下の要件について言及しました。
たとえば、コミット カウントが 20 の場合、ItemReader に 20 個のアイテムを読み取らせ、並行プロセッサに配布し、同じことを ItemWriter によってコミットする必要があり、次の 20 レコードは最初のチャンクが正常に完了した後にのみ読み取る必要があるとします。 20の。
誰かが要件を解決するのを手伝ってくれませんか?
前もって感謝します。
java - コンピューターの構成を考慮して、JVM はどのように機能しますか?
私は、Computer Organization を受講するまで、Java が移植可能である理由を常に理解していると思っていました。
これは、C プログラムの最初から最後までの私の解釈です。
C プログラム --> コンパイラ --> アセンブリ --> マシン コード --> ISA --> マイクロ アーキテクチャ (コンピュータが ISA を解釈する方法) --> 論理ゲート --> 回路 --> デバイス
コンパイラが ISA の知識を持っている必要がある場所。また、アセンブリとマシン コードは ISA によって異なります。
Java はそのままです: (JVM 内部): Java プログラム --> コンパイラ --> バイトコード
bytecode は JVM の ISA です。
したがって、JVMにはISA(バイトコード)を解釈するための独自のマイクロアーキテクチャもあると思います。
これは正確ですか?
したがって、全体的なサイクルは次のようになります: (JVM 内) Java プログラム --> バイトコード (ISA) --> JVM マイクロ アーキテクチャ --> ホスト ハードウェア
また、マイクロ アーキテクチャがプロセッサに実装されている場合、JVM はホストのプロセッサの 1 つを使用する必要がありますか?
multithreading - スレッドとプロセッサ
現在、マルチスレッド、スレッド、スレッドプールなどについて学んでいます。スレッドの数は、コンピューターが持つ論理プロセッサの数を超えてはならないことを読みました (または、CPU がそれ以上処理できないため、少なくともメリットはありません)。
では、たとえば 12 個の論理プロセッサを搭載したコンピューターで数百のスレッドを作成するコードを記述した場合、どのような動作が予想されるのでしょうか? 彼らは列に並びますか?彼らはお互いを待ちますか?それともエラーになりますか?100 個の継続的に実行されるスレッドの恩恵を受けるプロセスがあるが、コアが 12 個しかない場合、これを処理する最善の方法は何ですか? タスク マネージャーを開くと、何百ものプロセスと何千ものスレッドが実行されていることがよくわかります。それはどのように機能しますか?
また、Windows でプログラムを実行していて、他の多くのアプリケーション (つまり、Chrome、MS Excel、Skype など) と、おそらくバックグラウンド サービス (つまり、Windows Defender、 Wifi サービスなど...) これらの他のアプリケーションは論理プロセッサを占有し、スレッド化されたプログラムで使用できる論理プロセッサの数を減らしますか?