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

キューは、順序付けされた先入れ先出しのデータ構造です。キューの一般的な実装では、要素を後ろに押して前の位置からポップすることができます。



8
Javaで最後のN個の要素を保持するサイズ制限のキュー
Javaライブラリに関する非常にシンプルで簡単な質問:Queue最大サイズが固定されたを実装する既成のクラスがあります。つまり、常に要素の追加を許可しますが、新しく追加された要素のスペースを収容するためにヘッド要素を静かに削除します。 もちろん、手動で実装するのは簡単です: import java.util.LinkedList; public class LimitedQueue<E> extends LinkedList<E> { private int limit; public LimitedQueue(int limit) { this.limit = limit; } @Override public boolean add(E o) { super.add(o); while (size() > limit) { super.remove(); } return true; } } 私の知る限り、Java stdlibsには標準の実装はありませんが、Apache Commonsなどに実装されている可能性がありますか?
197 collections  queue  java 

7
Queue.Queueとcollections.deque
複数のスレッドがデータを入れることができるキューが必要です。複数のスレッドがそこから読み取ることができます。 Pythonには少なくともQueue.Queueとcollections.dequeの2つのキュークラスがあり、前者は後者を内部的に使用しているようです。どちらもドキュメントではスレッドセーフであると主張しています。 ただし、キューのドキュメントにも次のように記載されています。 collections.dequeは、ロックを必要としない高速のアトミックなappend()およびpopleft()操作を備えた、無制限のキューの代替実装です。 私はまったく理解していないと思います:これは、結局、dequeが完全にスレッドセーフではないことを意味しますか? もしそうなら、私は2つのクラスの違いを完全に理解していないかもしれません。Queueがブロッキング機能を追加していることがわかります。一方で、オペレーター内のサポートなど、いくつかの必要な機能が失われます。 内部の両端キューオブジェクトに直接アクセスするのは、 Queue()。dequeのx スレッドセーフ? また、dequeがすでにスレッドセーフであるのに、なぜQueueはその操作にミューテックスを使用するのですか?

11
std :: queueを効率的にクリアするにはどうすればよいですか?
JobQueueクラスの実装にstd :: queueを使用しています。(基本的に、このクラスはFIFO方式で各ジョブを処理します)。1つのシナリオでは、キューを1回でクリアします(キューからすべてのジョブを削除します)。std :: queueクラスで使用できるclearメソッドがありません。 JobQueueクラスのclearメソッドを効率的に実装するにはどうすればよいですか? ループでポップする簡単な解決策が1つありますが、もっと良い方法を探しています。 //Clears the job queue void JobQueue ::clearJobs() { // I want to avoid pop in a loop while (!m_Queue.empty()) { m_Queue.pop(); } }
166 c++  stl  queue 

9
.NETでブロッキングQueue <T>を作成しますか?
複数のスレッドがキューに追加され、複数のスレッドが同じキューから読み取るシナリオがあります。キューが特定のサイズに達すると、キューから項目が削除されるまで、キューを満たしているすべてのスレッドが追加時にブロックされます。 以下の解決策は私が現在使用しているものであり、私の質問は次のとおりです。これをどのように改善できますか?使用する必要があるBCLでこの動作を既に有効にしているオブジェクトはありますか? internal class BlockingCollection&lt;T&gt; : CollectionBase, IEnumerable { //todo: might be worth changing this into a proper QUEUE private AutoResetEvent _FullEvent = new AutoResetEvent(false); internal T this[int i] { get { return (T) List[i]; } } private int _MaxSize; internal int MaxSize { get { return _MaxSize; } set …


15
PHPタスクを非同期で実行する
私はやや大規模なWebアプリケーションで作業しており、バックエンドのほとんどはPHPです。コードのいくつかのタスクを完了する必要がある場所がいくつかありますが、ユーザーに結果を待たせたくありません。たとえば、新しいアカウントを作成するときに、ウェルカムメールを送信する必要があります。しかし、「登録の完了」ボタンを押したときに、実際にメールが送信されるまで待たせたくありません。プロセスを開始して、すぐにユーザーにメッセージを返したいだけです。 今までのところ、私はexec()を使ってハックのように感じるものを使用しています。基本的に次のようなことをしています: exec("doTask.php $arg1 $arg2 $arg3 &gt;/dev/null 2&gt;&amp;1 &amp;"); うまくいくようですが、もっと良い方法があるかどうか疑問に思っています。MySQLテーブルのタスクをキューに入れるシステムと、そのテーブルに1秒に1回クエリを実行し、見つかった新しいタスクを実行する別の長時間実行PHPスクリプトを書くことを検討しています。これには、将来、必要に応じてタスクを複数のワーカーマシンに分割できるという利点もあります。 車輪を再発明していますか?exec()ハックやMySQLキューより良い解決策はありますか?


6
Javaではどの並行キュー実装を使用する必要がありますか?
JavaDocsから: A ConcurrentLinkedQueueは、多くのスレッドが共通のコレクションへのアクセスを共有する適切な選択です。このキューはnull要素を許可しません。 ArrayBlockingQueueは、固定サイズの配列がプロデューサーによって挿入され、コンシューマーによって抽出された要素を保持する、古典的な「境界付きバッファー」です。このクラスは、待機中のプロデューサースレッドとコンシューマースレッドを注文するためのオプションの公平性ポリシーをサポートします LinkedBlockingQueueは、通常、アレイベースのキューよりもスループットは高くなりますが、ほとんどの並行アプリケーションでは予測できないパフォーマンスになります。 私には2つのシナリオがあります。1つは、1つのコンシューマーで多くのプロデューサー(それを使用するスレッド)をサポートするキューを必要とし、もう1つはその逆です。 使用する実装がわかりません。誰かが違いを説明できますか? また、「オプションの公平性ポリシー」とはArrayBlockingQueue何ですか?

11
スタックとキューの基本的な違いは何ですか?
スタックとキューの基本的な違いは何ですか? 私が違いを見つけることができないのを助けてください。 スタックとキューをどのように区別しますか? 私はさまざまなリンクで答えを検索し、この答えを見つけました。 高水準プログラミングでは、 スタックは、新しい要素を既存の要素の「上に」配置することによって長くなり、既存の要素の上部から要素を削除することによって短くなる要素のリストまたはシーケンスとして定義されます。これは、「プッシュ」と「ポップ」の数学演算を備えたADT [抽象データ型]です。 キューは、既存の要素の後ろに新しい要素を配置することで追加される要素のシーケンスであり、キューの前にある要素を削除することで短縮されます。ADT [抽象データ型]です。これらの用語には、Java、C ++、Pythonなどのプログラミングで理解できるものがあります。 より詳細な回答はありますか?私を助けてください。
130 stack  queue 


14
新しいエンキュー時に古い値を自動的にデキューする固定サイズのキュー
私はConcurrentQueue共有データ構造に使用していますが、その目的は、それに渡された最後のN個のオブジェクト(一種の履歴)を保持することです。 ブラウザがあり、最新の100個のURLを参照したいとします。容量がいっぱいになると(履歴内の100アドレス)、新しいエントリの挿入(エンキュー)時に最も古い(最初の)エントリを自動的にドロップ(デキュー)するキューが必要です。 どうすればそれを達成できSystem.Collectionsますか?
120 c#  queue  fifo 

5
LinkedBlockingQueueとConcurrentLinkedQueue
私の質問は、以前に尋ねたこの質問に関連しています。プロデューサースレッドとコンシューマースレッド間の通信にキューを使用している状況では、一般的に人々は、LinkedBlockingQueueまたはConcurrentLinkedQueue? どちらを使用する場合の利点/欠点は何ですか? APIの観点から見ることができる主な違いは、LinkedBlockingQueueオプションで境界を設定できることです。

8
Javaのキューのaddメソッドとofferメソッドの違いは何ですか?
テイクPriorityQueue例えば)http://java.sun.com/j2se/1.5.0/docs/api/java/util/PriorityQueue.html#offer(E 誰も私の例を与えることができますQueueどこaddおよびoffer方法が異なっていますか? Collectionドキュメントによると、このaddメソッドは多くのCollection場合、重複を追加するのではなく、要素が内に存在することを確認しようとします。だから私の質問は、addとofferメソッドの違いは何ですか? それはoffer方法が重複を追加するということですか?(a Collectionが明確な要素のみを持つ必要がある場合、これはそれを回避するためだと思います)。 EDIT:ではと方法は同じ方法である(下記の私の答えを参照)。とメソッドが異なるクラスの例を誰かに教えてもらえますか?PriorityQueueaddofferaddoffer
109 java  queue  add 

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