問題タブ [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 投票する
1 に答える
860 参照

c++ - ブーストshared_ptrですスレッドセーフ?

Boost shared_ptrを使用する場合、次のコードスレッドは安全ですか。ありがとう!

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

.net - リストはなぜですかスレッドセーフではありませんか?

次のサイトから:

http://crfdesign.net/programming/top-10-differences-between-java-and-c

残念ながら、List<>スレッドセーフではありません(C#ArrayListとJava Vectorはスレッドセーフです)。C#にもHashtable;があります。一般的なバージョンは次のとおりです。

List<T>スレッドセーフではない理由は何ですか?.NET Frameworkエンジニア側の実装の問題ですか?または、ジェネリックはスレッドセーフではありませんか?

0 投票する
7 に答える
81907 参照

python - Queue.Queue と collections.deque の比較

複数のスレッドが物を入れることができ、複数のスレッドが読み取ることができるキューが必要です。

Python には少なくとも 2 つのキュー クラスと がQueue.Queueありcollections.deque、前者は後者を内部的に使用しているようです。どちらもドキュメントでスレッドセーフであると主張しています。

ただし、キューのドキュメントにも次のように記載されています。

collections.deque は、ロックを必要としない高速のアトミックな append() および popleft() 操作を備えた無制限キューの代替実装です。

私はよく理解していないと思います:これは、dequeが完全にスレッドセーフではないことを意味しますか?

もしそうなら、私は 2 つのクラスの違いを完全には理解していないかもしれません。Queue がブロッキング機能を追加していることがわかります。一方、インオペレーターのサポートなど、いくつかの deque 機能が失われます。

内部dequeオブジェクトに直接アクセスすることは、

x in Queue().deque

スレッドセーフ?

また、deque が既にスレッドセーフであるのに、なぜ Queue はその操作にミューテックスを使用するのですか?

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

c++ - CFile オブジェクトの書き込みまたは読み取りのプロセス中にファイル ポインターを変更できますか

複数のスレッドからアクセスできる CFile オブジェクトがあります。あるスレッドがこのファイルにデータを書き込んでいる間に、別のスレッドがファイルからデータを読み取っている可能性があります。このポリシーに危険性はありますか? 書き込みまたは読み取りプロセスが完了する前に、ファイル ポインターを変更できますか? 答えはイエスです。同時に読み書きできるマルチスレッドの危険性を回避するにはどうすればよいですか?

どうもありがとうございました!

0 投票する
10 に答える
7270 参照

c# - リストです.Contains() スレッドセーフ呼び出し - C#

私の理解では、C# でジェネリック リスト (List) を使用している場合、複数の同時リーダーをサポートできますが、ライターは 1 つしかサポートできません。また、ライターをミックスに導入する場合は、操作をスレッド セーフにするために同期構造も提供する必要があります。

List.Contains は読み取り操作と見なされますか? つまり、このメソッドを呼び出す場合、ライターが同時にこの List に書き込みを行っている可能性があることを心配する必要がありますか?

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

multithreading - プリミティブ同期プリミティブ -- 安全?

制約のあるデバイスでは、2 つのブール値を使用して 2 つのスレッド間でロックを「偽造」していることがよくあります。それぞれが 1 つのスレッドによってのみ読み取られ、他のスレッドによってのみ書き込まれます。これが私が意味することです:

もちろん、PC ではこれを行いませんが、制約のあるデバイスではbool、ロックを取得するよりも値を読み取る方がはるかに高速であるように思われます。もちろんsleep(50)、バッファーの変更が必要な場合は、回復が遅くなります (" " を参照)。

質問 - 完全にスレッドセーフですか? それとも、このようにロックを偽造するときに注意する必要がある隠れた落とし穴はありますか? それとも、これをまったく行うべきではありませんか?

0 投票する
7 に答える
19663 参照

c++ - スレッドセーフな C++ スタック

私はC ++を初めて使用し、さまざまなライターがオブジェクトをスタックにプッシュし、リーダーがスタックからそれらをプルする(または少なくともオブジェクトへのポインターをプッシュする)マルチスレッドアプリを作成しています..

ロックコードなどを追加せずにこれを処理できる C++ に組み込まれた構造はありますか? そうでない場合、Boost ライブラリはどうですか?

編集:

やあ。最初の素晴らしい回答をありがとう。これが組み込み可能だと思った理由の 1 つは、私が純粋に x86 空間で考えていて、ポインターの PUSH/POP は命令レベルでのアトミック アクションであるべきだと考えていたからだと思います。

私の最初の予感が正しいかどうかはわかりませんが、これはすべてのプラットフォームで必ずしも正しいとは限りません。ただし、x86 で実行している場合、アトミック PUSH と POP をスタックに取得しますか?もしそうなら、これは本質的にロックフリーになりますか?

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

c++ - Linux および gcc 4 での C++ の新しい演算子のスレッド セーフ

すぐに、共有メモリを使用したメッシュ リファインメント アルゴリズムの並列バージョンの作業を開始します。

大学の教授は、コンパイラも stl もスレッドを認識していないため、スレッドの安全性について非常に注意する必要があると指摘しました。

私はこの質問を検索しましたが、答えはコンパイラー (多少スレッドを意識しようとする人もいます) とプラットフォーム (コンパイラーが使用するシステムコールがスレッドセーフかどうか) に依存していました。

では、Linux では、gcc 4 コンパイラーは new オペレーター用のスレッドセーフなコードを生成しますか?

そうでない場合、この問題を克服する最善の方法は何ですか? たぶん、新しいオペレーターへの各呼び出しをロックしますか?