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






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(); } 上記のコードはセマフォがバイナリであることを保証しますか?



5
SemaphoreとSemaphoreSlimのどちらを選択すればよいですか?
それらのパブリックインターフェイスは似ています。ドキュメントは SemaphoreSlimは、軽量の代替であり、Windowsカーネルのセマフォを使用していないと述べています。 このリソースは、SemaphoreSlimの方がはるかに高速であることを示しています。SemaphoreSlimはどのような状況でセマフォよりも意味がありますか?

3
SemaphoreSlimの使用法を理解する必要があります
これが私が持っているコードですが、何SemaphoreSlimをしているのかわかりません。 async Task WorkerMainAsync() { SemaphoreSlim ss = new SemaphoreSlim(10); List<Task> trackedTasks = new List<Task>(); while (DoMore()) { await ss.WaitAsync(); trackedTasks.Add(Task.Run(() => { DoPollingThenWorkAsync(); ss.Release(); })); } await Task.WhenAll(trackedTasks); } void DoPollingThenWorkAsync() { var msg = Poll(); if (msg != null) { Thread.Sleep(2000); // process the long running CPU-bound job …

6
CountDownLatchとセマフォ
使用する利点はありますか java.util.concurrent.CountdownLatch の代わりに java.util.concurrent.Semaphore? 私の知る限り、次のフラグメントはほぼ同等です。 1.セマフォ final Semaphore sem = new Semaphore(0); for (int i = 0; i < num_threads; ++ i) { Thread t = new Thread() { public void run() { try { doStuff(); } finally { sem.release(); } } }; t.start(); } sem.acquire(num_threads); 2:CountDownLatch final CountDownLatch latch …

7
セマフォ-初期カウントの用途は何ですか?
http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspx セマフォを作成するには、初期カウントと最大カウントを指定する必要があります。MSDNによると、初期カウントは- 同時に許可できるセマフォの最初の要求数。 最大数は 同時に許可できるセマフォのリクエストの最大数。 最大数は、リソースに同時にアクセスできるスレッドの最大数であることが理解できます。しかし、初期カウントの使用は何ですか? 初期カウントが0で最大カウントが2のセマフォを作成すると、どのスレッドプールスレッドもリソースにアクセスできなくなります。初期カウントを1に設定し、最大カウントを2に設定すると、スレッドプールスレッドのみがリソースにアクセスできます。初期カウントと最大カウントの両方を2に設定した場合にのみ、2つのスレッドがリソースに同時にアクセスできます。それで、私は最初のカウントの重要性について本当に混乱していますか? SemaphoreSlim semaphoreSlim = new SemaphoreSlim(0, 2); //all threadpool threads wait SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1, 2);//only one thread has access to the resource at a time SemaphoreSlim semaphoreSlim = new SemaphoreSlim(2, 2);//two threadpool threads can access the resource concurrently
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.