問題タブ [lightweight-processes]
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 ジェネレーター関数/オブジェクトの命名規則
同じクラスにいくつかの論理プロセスを実装しています。クラスインスタンスは、プロセスごとにジェネレーターを取得し、そのジェネレーターをrun()
進めます。私の場合、ジェネレーターは終了しません。
以下のコードでfoo_functionとfoo_objectをどのように呼び出しますか?
典型的なプロセスは、、、discovery
などauthentication
ですwatchdog
。
ジェネレーターとジェネレーター オブジェクトを含む属性を適切な方法で定義する関数に名前を付けるにはどうすればよいですか?
最後に、同じ名前の名前は非常識ですよね?
programming-languages - LLVM は「グリーン スレッド」/軽量プロセスを実装するための機能を提供しますか?
ネイティブ コード ジェネレーターとして LLVM を使用する Erlang の流れで、軽量プロセス (「グリーン スレッド」) をサポートする並行言語の設計を検討しています。軽量プロセスは M:N 方式でネイティブ OS スレッドに割り当てられ、スレッド間のワークスティーリングが可能である必要があります (つまり、プロセスは、必要に応じてスレッド間で受け渡しできるデータ構造によって表される必要があります)。非常に多数のプロセスが同時に存在する可能性があるため、プロセスは多くのメモリを消費せず、プロセス間のコンテキストの切り替えはできるだけ迅速に行う必要があります。さらに、コンテキストの切り替え中またはガベージ コレクションが発生した場合に、軽量プロセスを "一時停止" するのはかなり簡単なはずです。Erlang に LLVM バックエンドがあることは理解していますが、その実装に関する文献はほとんど見つかりません。
linux - Linux のスレッドと LWP
「Linux のすべてのスレッドは LWP ですが、すべての LWP がスレッドであるとは限りません」という文は正しいですか。実際、Linuxでのスレッドの実現を理解しようとしています。pthread_create は clone syscall を呼び出しますが、man clone では LWP への参照が見つかりませんでした。
では、Linux には LWP が搭載されているのでしょうか。
c - マルチスレッドはできませんが、for ループまたはシングル スレッドで動作します
2D 配列で並列計算を実行するために複数のスレッドを取得しようとしています。ユーザーは、25*25 の 2 次元配列で必要なスレッド数を指定します。ユーザーが 5 つのスレッドを必要とする場合、各スレッドは 125 要素で計算を実行します。(簡単にするために、これらの条件の下でプログラムを動作させるために、これらの番号をハードコーディングしました)。
コードは 1 つのスレッドに対して機能し、for ループでシミュレートすると、すべてが正しく機能します。コンウェイズゲームオブライフプログラムです。1 つのスレッドまたは forloop で gen 関数を 5 回呼び出すと、プログラムは正常に動作します。グリッドを適切に印刷します。5 つのスレッドを使用すると、1 回印刷するだけでプログラムが終了します。
printf はスレッドでは機能しないため、スレッド内でテストすることはできません。私はこれに何時間も費やしましたが、理解できません。
cassandra - Cassandra: アトミシティの提供と「ダーティ リード」の防止を同時に実現
異なるパーティション キーを持つ複数の行を Cassandra テーブルにアトミックに挿入する必要があります。同時に、クエリごとに、ユーザーが更新/挿入しているデータの状態が正しいことを確認する必要があります (競合状態の場合にデータが台無しにならないようにするため)。たとえば、db 構造は次のとおりです。
行を挿入するときは、この PK がデータベースに存在しないことを確認する必要があります。誤ってデータを上書きしたくありません (Cassandra はそれを行うだけです)。そのために軽量なトランザクションが存在するので、IF NOT EXISTS
句を追加するだけで済みます。しかし、問題は、すべてが成功するか、どれも成功しないはずのそのような挿入がいくつかあることです。次の解決策は機能しません。
発行されたエラーは次のとおりBatch with conditions cannot span multiple partitions
です。ドキュメントは、回避策を提供せずにそれを言っています。データベース層でその種の原子性と一貫性を強制する方法はありますか? ACID の原則が Cassandra で保証されないことは理解していますが、なぜバッチ ステートメントの制限が警告ではなくエラーとして分類されるのかについての答えが見つかりません。この問題の回避策は何ですか?
Cassandraの哲学を理解するためのアイデアと助けをいただければ幸いです