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

コンピュータサイエンスでは、同時実行性は複数の計算を重複する期間で実行できるシステムの特性です。計算は、同じチップの複数のコアで実行されたり、同じプロセッサでプリエンプティブに時分割されたスレッドで実行されたり、物理的に分離されたプロセッサで実行されたりします。

19
Pythonでスレッドを使用するにはどうすればよいですか?
Pythonのスレッディングを理解しようとしています。私はドキュメントと例を見てきましたが、率直に言って、多くの例は過度に洗練されており、それらを理解するのに苦労しています。 マルチスレッド用に分割されているタスクをどのように明確に示しますか?


18
競合状態とは何ですか?
マルチスレッドアプリケーションを作成するときに発生する最も一般的な問題の1つは、競合状態です。 コミュニティへの私の質問は次のとおりです。 競合状態とは何ですか? それらをどのように検出しますか? それらをどのように扱いますか? 最後に、それらの発生をどのように防止しますか?

16
コレクションが変更されました。列挙操作が実行されない可能性があります
デバッガーが接続されていると発生しないように見えるため、このエラーの原因を突き止めることはできません。以下はコードです。 これは、WindowsサービスのWCFサーバーです。NotifySubscribersメソッドは、データイベントが発生するたびにサービスによって呼び出されます(ランダムな間隔ですが、それほど頻繁ではありません-1日に約800回)。 Windowsフォームクライアントがサブスクライブすると、サブスクライバーIDがサブスクライバーディクショナリに追加され、クライアントがサブスクライブを解除すると、ディクショナリーから削除されます。このエラーは、クライアントが登録解除したとき(またはその後)に発生します。次にNotifySubscribers()メソッドが呼び出されたときに、foreach()ループが失敗し、件名のエラーが表示されます。このメソッドは、以下のコードに示すように、エラーをアプリケーションログに書き込みます。デバッガーが接続され、クライアントがサブスクライブを解除すると、コードは正常に実行されます。 このコードに問題がありますか?辞書をスレッドセーフにする必要がありますか? [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)] public class SubscriptionServer : ISubscriptionServer { private static IDictionary<Guid, Subscriber> subscribers; public SubscriptionServer() { subscribers = new Dictionary<Guid, Subscriber>(); } public void NotifySubscribers(DataRecord sr) { foreach(Subscriber s in subscribers.Values) { try { s.Callback.SignalData(sr); } catch (Exception e) { DCS.WriteToApplicationLog(e.Message, System.Diagnostics.EventLogEntryType.Error); UnsubscribeEvent(s.ClientId); } } } public …




19
ConcurrentHashMapとCollections.synchronizedMap(Map)の違いは何ですか?
複数のスレッドによって同時に変更されるマップがあります。 Java APIには、3つの異なる同期Map実装があるようです。 Hashtable Collections.synchronizedMap(Map) ConcurrentHashMap 私が理解していることから、インターフェースに合うように後で適応されHashtableた古い実装(廃止されたDictionaryクラスを拡張)Mapです。それは一方でされた同期、深刻な持っているようだスケーラビリティの問題を、新たなプロジェクトのために推奨されません。 しかし、他の2つはどうですか?返された地図との違いは何ですCollections.synchronizedMap(Map)とConcurrentHashMapSは?どちらがどの状況に適していますか?

9
ConcurrentHashMapに対するConcurrentHashSetがない理由
HashSetはHashMapに基づいています。 HashSet<E>実装を見ると、すべてがで管理されていHashMap<E,Object>ます。 <E>のキーとして使用されますHashMap。 そして、それHashMapはスレッドセーフではないことを知っています。そのためConcurrentHashMap、Java を使用しています。 これに基づいて、なぜ私たちは?に基づくべきConcurrentHashSetを持っていないのか混乱していConcurrentHashMapます。 他に欠けているものはありますか?Setマルチスレッド環境で使用する必要があります。 また、自分で作成したい場合はConcurrentHashSet、HashMapto ConcurrentHashMapを置き換えて残りをそのままにすることでそれを実現できますか?

8
NSOperation vs Grand Central Dispatch
iOS用の並行プログラミングについて学んでいます。これまで、NSOperation/NSOperationQueueとについて読みましたGCD。over を使用する理由とその逆の理由は何ですか?NSOperationQueueGCD 両方のような音GCDやNSOperationQueue抽象化を明示的に作成するNSThreadsユーザから。ただし、2つのアプローチの関係は明確ではないため、フィードバックをお待ちしています。



14
Java 8並列ストリームのカスタムスレッドプール
Java 8 並列ストリームのカスタムスレッドプールを指定することは可能ですか?どこにも見つかりません。 サーバーアプリケーションがあり、並列ストリームを使用したいとします。しかし、アプリケーションは大きく、マルチスレッドなので、それを区分けしたいと思います。別のモジュールからのapplicationblockタスクの1つのモジュールで実行速度の遅いタスクが必要ではありません。 異なるモジュールに異なるスレッドプールを使用できない場合、それは実際の状況のほとんどで並列ストリームを安全に使用できないことを意味します。 次の例を試してください。別のスレッドで実行されるCPU集中タスクがいくつかあります。タスクは並列ストリームを活用します。最初のタスクは壊れているため、各ステップには1秒かかります(スレッドスリープによってシミュレートされます)。問題は、他のスレッドがスタックして、壊れたタスクが完了するのを待つことです。これは不自然な例ですが、サーブレットアプリと誰かが共有フォーク結合プールに長時間実行タスクを送信するとします。 public class ParallelTest { public static void main(String[] args) throws InterruptedException { ExecutorService es = Executors.newCachedThreadPool(); es.execute(() -> runTask(1000)); //incorrect task es.execute(() -> runTask(0)); es.execute(() -> runTask(0)); es.execute(() -> runTask(0)); es.execute(() -> runTask(0)); es.execute(() -> runTask(0)); es.shutdown(); es.awaitTermination(60, TimeUnit.SECONDS); } private static void runTask(int …

25
ExecutorServiceを使用して、すべてのスレッドが完了するのを待つ方法は?
次のように、一度にいくつかのタスクを4回実行する必要があります。 ExecutorService taskExecutor = Executors.newFixedThreadPool(4); while(...) { taskExecutor.execute(new MyTask()); } //...wait for completion somehow それらがすべて完了したら、どうすれば通知を受け取ることができますか?今のところ、いくつかのグローバルタスクカウンターを設定し、すべてのタスクの終わりにそれを減らすことよりも良いことを考えることはできません。その後、無限ループでこのカウンターを監視して0にします。または、Futureのリストを取得し、それらすべてに対して無限ループモニターisDoneを実行します。無限ループを含まないより良い解決策は何ですか? ありがとう。

8
C#でグローバルミューテックスを使用するための良いパターンは何ですか?
Mutexクラスは非常に誤解されており、グローバルmutexはさらに誤解されています。 グローバルmutexを作成するときに使用する、安全で適切なパターンは何ですか? うまくいくもの 私のマシンが置かれているロケールに関係なく ミューテックスを適切に解放することが保証されています ミューテックスが取得されない場合、オプションで永久にハングアップしない 他のプロセスがミューテックスを放棄するケースを扱います
377 c#  concurrency  mutex 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.