問題タブ [thread-safety]

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

thread-safety - スレッドセーフな一様乱数ジェネレータ

各スレッドが同じ乱数シーケンスを生成する必要がある並列 Fortran90 コードがあります。

特定のシードに対して、プログラムを実行するたびに同じ結果を繰り返すことが完全にできないため、スレッドセーフではないように思われる乱数ジェネレーターがあります。

スレッドセーフな RNG のコードを探して、Web 全体を (ほぼ) サーフィンすることに失敗しました。誰かが私に(へのリンクを)1つのコードを提供できますか?

前もって感謝します!

0 投票する
16 に答える
811535 参照

c# - コレクションが変更されました。列挙操作が実行されない可能性があります

デバッガーが接続されている場合は発生しないように見えるため、このエラーの原因を突き止めることはできません。

コレクションが変更されました。列挙操作が実行されない可能性があります

以下はコードです。

これは、Windows サービスの WCF サーバーです。このメソッドNotifySubscribers()は、データ イベントが発生するたびにサービスによって呼び出されます (ランダムな間隔ですが、それほど頻繁ではありません - 1 日あたり約 800 回)。

Windows フォーム クライアントがサブスクライブすると、サブスクライバー ID がサブスクライバー ディクショナリに追加され、クライアントがサブスクライブを解除すると、ディクショナリから削除されます。エラーは、クライアントが登録解除したとき (またはその後) に発生します。次にNotifySubscribers()メソッドが呼び出されると、foreach()件名にエラーが表示されてループが失敗するようです。このメソッドは、次のコードに示すように、エラーをアプリケーション ログに書き込みます。デバッガーがアタッチされ、クライアントがサブスクライブを解除すると、コードは正常に実行されます。

このコードに問題がありますか? 辞書をスレッドセーフにする必要がありますか?

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

thread-safety - PRNG はスレッドセーフである必要がありますか?

同時呼び出しによって seg-v が発生したり、同じ値が返されたりしない限り、これらのエラーの主な影響が予測不可能な結果であり、それが PRNG のポイントである場合、PRNG で競合状態やデータ破損を防ぐ理由は何ですか?


編集:競合状態やデータ破損の影響を受けない PRNG はありますか?

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

java - HttpSession はスレッド セーフですか? set/get Attribute はスレッド セーフ操作ですか?

また、セッションに保存されているオブジェクトの状態がわかっていることを保証するために、設定されているオブジェクトはスレッドセーフである必要がありますか。

また、私はウェブ上で次の使用を提案していることを読んでいました。

これは有効な提案ですか?

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

asp.net - セッションでの Hibernate スレッドセーフ

私はしばらくの間 NHibernate を使用してきましたが、2 つのページを同時に (またはできる限り近くで) 要求しようとすると、エラーが発生することがあります。したがって、セッション管理がスレッドセーフではないためだと思いました。

私のクラスだと思ったので、このブログ投稿http://pwigle.wordpress.com/2008/11/21/nhibernate-session-handling-in-aspnet-the-easy-way/とは別の方法を使用しようとしましたしかし、私はまだ同じ問題を抱えています。私が得ている実際のエラーは次のとおりです。

それかデータリーダーが開いていないかのどちらかですが、これが主な原因です。

セッション管理クラスを以下に配置しました。なぜこれらの問題が発生するのか、誰でもわかりますか?

そして、私が実際に使用しているストアは次のとおりです。

Application_Start で SessionFactory を次のように初期化します。

アップデート

アドバイスありがとうございます。コードを単純化するためにいくつかの異なることを試みましたが、まだ同じ問題に遭遇しており、その理由がわかるかもしれません。

必要に応じてリクエストごとにセッションを作成しますが、global.asax では Application_EndRequest でセッションを破棄しています。ただし、ページの読み込みの最後にデバッグ中に Application_EndRequest が複数回発生していることがわかります。イベントはリクエストの最後に一度だけ発生すると思われますが、そうではなく、他のいくつかのアイテムがセッションを使用しようとしている場合 (これがエラーの原因です)、何らかの奇妙な理由で発生する可能性があります私の問題であり、セッションはまだスレッドセーフであり、早期に破棄されています。

誰でもアイデアはありますか?Google を実行したところ、VS 開発サーバーがそのような問題を引き起こしていることがわかりましたが、IIS を介して実行しています。

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

java - Java StringBuilder とスレッド セーフ

複数の部分から文字列を作成していて、どちらStringBufferかを使用したい、または使用したいStringBuilder。Java 5 docs から、可能な場合はそれが推奨されることがわかりますが、次StringBuilderの点に注意してください。

のインスタンスはStringBuilder、複数のスレッドで安全に使用できません。

StringBuilderこのステートメントから、単一のインスタンスを複数のスレッドで共有するべきではないことがわかります。しかし、次の場合はどうでしょうか。

ここでは、StringBuilderクラスを同時に使用して関数内に同時に複数のスレッドが存在する可能性がありますが (たとえば、静的変数が存在する場合は、その変数への同時アクセスなど)、各スレッドは独自のStringBuilder. ドキュメントから、これが複数のスレッドによる使用としてカウントされるかどうかを判断することはできません。

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

thread-safety - スレッドセーフでなければならない sybase を呼び出す nsapi プラグインを作成するための提案

12.5 クライアントがスレッド セーフかどうかを示す sybase のドキュメントを探すのに苦労しています。スレッド化された環境で動作する nsapi プラグインを作成しているため、sybase スレッドセーフ呼び出しを行う必要があります。そのため、sybase クライアントがスレッド化された環境で実行できることを確認するか、Web サーバーの速度を低下させる sybase への呼び出しをシリアル化する必要があります。提案?

0 投票する
6 に答える
1926 参照

c# - C# スレッド セーフに関する質問

私はスレッドプールを使用して、重い処理と少しのSQLを実行しています。現在、必要なときにSQL接続を開き、クエリを実行してから閉じます。これはうまくいきます。アプリケーションは問題なく実行されています。このアプリケーションは、より多くの作業を行うため、より多くのスレッドを使用しています。より多くのスレッドは、より多くの SQL 接続の開閉を意味します。SQL 2005 では、これは実際にサーバーに打撃を与えます。私のテスト サーバーは、1 秒あたり約 175 トランザクションを実行しています。これらのうち約 150 が master データベースで実行されており、「ValidateSQLLogin」です。

各スレッドに独自の接続があり、この接続がスレッド全体に渡されるようにアプリを変更します。

だから私の質問は:

SQL 接続オブジェクトがスレッド内でローカルに作成され、ref によって別のクラスの静的関数に渡される場合、これは安全ではありませんか?

私の最初の考えは、10 個のスレッドがすべて同時に同じ静的関数を呼び出し、それぞれが独自の接続オブジェクトを渡す可能性があるため、安全ではないということです。

以前は、静的関数は独自の接続を開き、完了時に閉じていました。

安全でない場合、これを回避する最善の方法は何ですか。SQL接続の開閉を最小限に抑える必要があります。

ありがとう

ガレス