mutex

    0

    1答えて

    の面で低い競合ミューテックスどのようにコストがかかります。それは非常に低い競合ですが、私は正しいことを保証するためにそれを守る必要があります。 ローカル変数を使用して(コードの書き方に基づいて動作します)、ローカル変数を使用するオプションがありますが、これはCPU使用率の点でより優れたアプローチです。 私はロックの上の任意の競合を持っていないことはほぼ決して期待通りのローカル変数を、チェックインク

    0

    2答えて

    簡単なコード(私はそれが非常に悪いものであることを知っているが、私はちょうど例のためにそれを作った): 1 #include <mutex> 2 #include <iostream> 3 #include <thread> 4 5 std::mutex mu; 6 7 void myFunc(void) { 8 for (int i = 0; i < 100; ++i) {

    -2

    1答えて

    Goで並行プログラムを使用する場合、var mutex sync.Mutexを使用し、同期コードブロックを実行する必要がある場合は、mutex.Lock()とmutex.Unlock()を呼び出します。今私はここにいくつかの疑問を持っている: 1)mutexはCodeBlockAの操作にロックするために使用されている場合mutexすなわちのインスタンスが1つだけあり、および他のいくつかのgorou

    3

    2答えて

    基本的に、タイトルは自明です。 私は次のように使用します: コードはObjective-C++です。 Objective-Cクラスは、異なる目的関数への同時呼び出しを行います。 C++標準コンテナはスレッドセーフではないため、std::mutex〜lockとunlockstd::vector<T>の編集オプションをクラス全体で使用します。 std::lock_guard

    0

    2答えて

    なぜstd::mutex::unlock()はnoexeptではないのですか?何らかの理由により、ミューテックスを所有していないスレッドがunlock()を呼び出すと、標準によってその動作は未定義のままになります。そうすることの正当性は何ですか?これにより、関数がスローした場合、std::unique_lockまたはstd::lock_guardのデストラクタ実装で、デストラクタで例外が誤ってリー

    5

    2答えて

    私は、2つのboost :: scoped_locksを同時に保持すると問題があるかどうかを知りたいと思います。ロックは異なるmutexをロックしています。次の例を考えてみましょう。 void foo1() { boost::recursive_mutex::scoped_lock lock(mutex1); foo2(); } void foo2() {

    1

    1答えて

    私はAS TANENBAUMのModern Operation Systemsという本を読んでおり、以下のように条件変数を説明する例を示します。私にはデッドロックがあり、私が見逃していることが分かりません。 消費者スレッドが最初に開始します。 の直後にthe_mutexがロックされています。コンシューマ条件変数の待機中にスレッドがブロックされました。condc。 プロデューサーは、この時点で実行さ

    1

    1答えて

    私は最近、特定のRubyプログラムがなぜ遅いのかを診断しようとしていました。結局のところ、スケーリングの問題が原因で特定のミューテックスに多数の競合が発生していました。 私は、この問題を診断しやすくするために使用していた可能性のあるツールがあるかどうか疑問に思っていましたか?私は、このプログラムの100以上のスレッドが時間を費やしていることの詳細な出力を得るためにRuby-Profを使用することが

    4

    1答えて

    The boost documentation for upgradable and shared locksには、共有ロックが保持されている場合、他のスレッドがアップグレード可能なロックを1つしか取得できないことが示されています。そのため、共有ロックがアップグレード可能なロックと共に保持されているときに他のスレッドがアップグレード可能なロックを取得しようとすると、ブロックされます。 複数のスレッ