問題タブ [tvar]

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 投票する
2 に答える
1463 参照

haskell - Haskell:TVarはどのように機能しますか?

TVarはどのように機能しますか?私が読んだところによると、すべてのトランザクションを受信するとすぐに実行しようとしますが、トランザクションが完了すると、現在実行中の他のトランザクションが無効になり、再起動する必要があります。これはTVarの仕組みですか?

この場合、100ミリ秒ごとに1ミリ秒の長さのトランザクションが発生する場合、処理に200ミリ秒かかるトランザクションは決して完了しないことを意味しますか?

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

haskell - Haskell:2つ以上のTVarをアトミックに更新します。可能?

1つのトランザクションで2つTVarの異なるをアトミックに更新できますか?つまりTVar、競合を減らすために、多数のデータ構造からデータ構造を構成できますか?もしそうなら、あなたは例を提供できますか?

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

haskell - Haskell: TVar: 飢餓の防止

TVarを使用してWebアプリケーションに状態を保存することを検討しています(再起動時に再作成できます)。ただし、TVar の競合の側面が気になります。実行時間の短いトランザクションが頻繁に発生すると、継続的にトランザクションが中断されるため、長時間のトランザクションが不足する可能性があるようです。また、実行時間の長いトランザクションが再起動し続けると、CPU の負荷が増加し、これらのトランザクションの長さがさらに長くなる傾向があります。最終的に、これによりサーバーが完全に応答しなくなる可能性があると思います。

これを考慮して、私はこれらの質問があります:

(1) TVar (または別のデータ型) は、同時試行/再試行ではなく、ロックを使用できますか。

(2) TVar (または別のデータ型) は、いくつかの異なる競合メカニズム、つまり「トランザクションを別のトランザクションを実行する前に 1 秒間実行させる」、または少なくともトランザクションが最終的に完了することを保証する (つまり、リソース不足を防ぐ競合アルゴリズム) を持つことができますか?実行時間の長いトランザクション)。

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

haskell - Haskell: TVar: orElse

の「else」部分は、別のトランザクションが読み取っorElseたトランザクションに書き込んでいるためにトランザクションが再試行されたときに呼び出されますか、それとも明示的に呼び出されたときにのみ呼び出されますか?TVarretry

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

haskell - トランザクショナル メモリの使用による型エラー

関数でインスタンス化してリストに収集し、値を書き込むために別の関数に与えるhaskellでトランザクション変数を使用しています。

関数 moveGhost でこれらの共有変数 (ゴーストに格納されている) を使用します。

共有変数 buff と res の両方に同じ戦略を使用していますが、次の使用でエラーが発生しますTvar res

この TVar の何が問題なのか、なぜ TVar 愛好家にとって問題にならないのか誰か知っていますか?

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

haskell - Haskell STM シャード TVAR

Haskell と STM は初めてで、基本概念を理解しようとしています。

Haskell と関数型プログラミング全般では、間違っていたら訂正してください。割り当てのようなものはありません。

私ができることは、 andx=3;を使用して別のバインディングを生成することだけです。x3

TVar とスレッドに関して言えば、同じ TVar を共有する多数のスレッドがある場合、1 つのスレッドが で値を変更するとwriteTVar、他のスレッドは変更された値を認識します。

同じ var を共有する 2 つのスレッドがTVar Intあり、最初のスレッドがそれに 1 を追加すると、成功した場合、2 番目のスレッドは更新された値を参照しますか?

タクス

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

haskell - GHCi で TVar の値を調べる

サイモン・ペイトン・ジョーンズの同時実行の例で作業すると、次のコードが得られます。

GHCi REPLでこれをテストしようとしています

当座預金残高が $110 であることを確認するにはどうすればよいですか?

私が試してみました

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

haskell - 多くの引数を取る TVar 操作と関数が散らばる Haskell コード: コードの匂い?

Haskell で MUD サーバーを作成しています (MUD = Multi User Dungeon: 基本的に、マルチユーザー テキスト アドベンチャー/ロールプレイング ゲーム)。ゲーム世界のデータ/状態は、約 15IntMapの異なる で表されます。私のモナド トランスフォーマー スタックは次のようになります: ReaderT MudData IO、ここで、MudData型は s を含むレコード型でIntMap、それぞれに独自のものがありますTVar(同時実行のために STM を使用しています):

...等々。(私はレンズを使用しているため、アンダースコアです。)

一部の機能には特定IntMapの が必要ですが、他の機能には他の機能が必要です。したがって、それぞれIntMapを独自に持つことで、TVar粒度が提供されます。

ただし、コードにパターンが現れました。TVarプレーヤー コマンドを処理する関数では、STM モナド内の sに読み取る (場合によっては後で書き込む) 必要があります。したがって、これらの関数は、whereブロックで定義された STM ヘルパーを持つことになります。readTVarほとんどのコマンドは少数の にアクセスする必要があるため、これらの STM ヘルパーにはかなりの数の操作が含まれていることがよくありますIntMap。さらに、特定のコマンドの関数は、 の一部またはすべてを必要とする多くの純粋なヘルパー関数を呼び出す場合がありますIntMap。したがって、これらの純粋なヘルパー関数は、多くの引数 (場合によっては 10 以上) を取ることになります。

そのため、私のコードは、readTVar多数の引数をとる多くの式と関数で「散らかって」います。ここに私の質問があります: これはコードのにおいですか? コードをよりエレガントにする抽象化が欠けていますか? データ/コードを構造化するためのより理想的な方法はありますか?

ありがとう!

0 投票する
0 に答える
455 参照

r - R: 'dimnames' [2] の長さが配列の範囲と等しくありません

tsDyn パッケージを使用して、「r」でしきい値自己回帰モデルを実行しようとしています。

「r」で次のコマンドを実行しました。

次のエラーメッセージが表示されます。

私の時系列オブジェクトは次のようになります。

リクエストから編集:

エラーメッセージがわかりません、またはそれを修正するために何ができますか?

どんな助けにも非常に感謝しています。

よろしくお願いします

ラスムス・ダムガード