タグ付けされた質問 「mutex」

ミューテックス(「相互排除」)は、同じデータまたはリソースが複数のスレッドから同時にアクセス(特に変更)されたときに整合性を保証するメカニズムです。

6
shared_mutexのブーストの例(複数の読み取り/ 1つの書き込み)?
いくつかのデータを頻繁に読み取らなければならないマルチスレッドアプリがあり、そのデータが更新されることもあります。現在、ミューテックスはそのデータへのアクセスを安全に保ちますが、複数のスレッドが同時に読み取れるようにし、更新が必要な場合にのみロックアウトする必要があるため、コストがかかります(更新スレッドは他のスレッドが完了するのを待つことができます) 。 これはboost::shared_mutex本来あるべきことだと思いますが、使い方がよく分からず、具体的な例もわかりません。 開始するために使用できる簡単な例はありますか?


8
Javaにミューテックスはありますか?
JavaのMutexオブジェクトまたはそれを作成する方法はありますか?1つの許可で初期化されたSemaphoreオブジェクトが役に立たないので、私は尋ねています。このケースを考えてみましょう: try { semaphore.acquire(); //do stuff semaphore.release(); } catch (Exception e) { semaphore.release(); } 最初の取得で例外が発生した場合、catchブロックでの解放により許可が増加し、セマフォはバイナリセマフォではなくなります。 正しい方法はありますか? try { semaphore.acquire(); //do stuff } catch (Exception e) { //exception stuff } finally { semaphore.release(); } 上記のコードはセマフォがバイナリであることを保証しますか?


7
JavaScriptでミューテックスは必要ですか?
私はこのリンクを見ました:JavaScriptでの相互排除の実装。一方、JavaScriptにはスレッドがないことを読みましたが、それはどういう意味ですか? イベントが発生したとき、コードのどこで中断できますか? JSにスレッドがない場合、JSでミューテックスを使用する必要がありますか? 具体的には、私はによって呼び出される関数使用した場合の効果について疑問に思ってsetTimeout()やXmlHttpRequestさんをonreadystatechangeグローバルにアクセス変数に。

4
PTHREAD_MUTEX_INITIALIZERとpthread_mutex_init(&mutex、param)
違いはありますか pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; または pthread_mutex_t lock; pthread_mutex_init ( &lock, NULL); 最初の方法のみを使用しても安全ですか? 注:私の質問は、ほとんどの場合、せいぜい数台のクライアントをサーバーに接続して、ワーカースレッドでの問い合わせを解決するだけの非常に小さなプログラムに関係しています。
89 c  ubuntu  pthreads  mutex 


3
ミューテックスをロックせずにpthread_cond_signalを呼び出す
pthread_cond_signalを呼び出す前にミューテックスをロックし、呼び出した後にミューテキストのロックを解除する必要があることをどこかで読みました。 pthread_cond_signal()ルーチンは、条件変数を待機している別のスレッドに信号を送る(またはウェイクアップする)ために使用されます。ミューテックスがロックされた後に呼び出す必要があり、pthread_cond_wait()ルーチンを完了するためにミューテックスのロックを解除する必要があります。 私の質問は、ミューテックスをロックせずにpthread_cond_signalまたはpthread_cond_broadcastメソッドを呼び出しても大丈夫ではないかということです。

1
std :: lock_guardをstd :: mutex :: lock()よりも高速にするにはどうすればよいですか?
私は同僚とlock_guardについて議論しており、彼は、lock_guardクラスのインスタンス化とインスタンス化のコストのために、lock_guardはmutex :: lock()/ mutex :: unlock()よりもおそらく遅いと提案しました。 次に、この簡単なテストを作成しました。驚いたことに、lock_guardを使用したバージョンは、mutex :: lock()/ mutex :: unlock()を使用したバージョンよりもほぼ2倍高速です。 #include <iostream> #include <mutex> #include <chrono> std::mutex m; int g = 0; void func1() { m.lock(); g++; m.unlock(); } void func2() { std::lock_guard<std::mutex> lock(m); g++; } int main() { auto t = std::chrono::system_clock::now(); for (int i = 0; …
9 c++  mutex 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.