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

1
マイクロコントローラー用RTOSのメッセージキュー
現在、マイクロコントローラー用のRTOSを書いています。全体がC ++ 11で書かれています-誰かが興味を持っていて、リポジトリへのリンクが一番下にある場合。 現在私は、スレッド間(または、割り込みハンドラーとスレッド間、または割り込みハンドラーと他の割り込みハンドラー間)でオブジェクトを受け渡すための単純なデータキューであるクラスを作成しています。通常、私は他のプロジェクトにあるいくつかの共通のAPIを追跡しようとすると、まだ私は持っている同時キューのいずれかの例が見つかりませんでしたemplace()機能とサポートタイムアウトを。 私の一般的な「問題」は、次の2つのインターフェースを決定できないことです。 (std::chrono::duration<Rep, Period>はテンプレートタイプです。わかりやすくするためにテンプレートのボイラープレートは省略しています) 最初のバージョン: template<typename T> class FifoQueue { public: ... template<typename... Args> int tryEmplaceFor(std::chrono::duration<Rep, Period>, Args&&... args); int tryPopFor(T&, std::chrono::duration<Rep, Period>); int tryPushFor(const T&, std::chrono::duration<Rep, Period>); int tryPushFor(T&&, std::chrono::duration<Rep, Period>); ... } 2番目のバージョン: template<typename T> class FifoQueue { public: ... template<typename... Args> int tryEmplaceFor(std::chrono::duration<Rep, Period>, …

13
キューの良い、簡単な例は何ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 4年前休業。 ロックされています。この質問とトピックへの回答はロックされています。質問はトピックから外れていますが、歴史的に重要です。現在、新しい回答や相互作用を受け入れていません。 私はCS2(Java and data structures)を教えていますが、キューを教えるときに使用する良い例を思い付くのが困難です。私がそれらを使用する2つの主要なアプリケーションは、multithreadedメッセージパッシング(ただし、MTプログラミングはコースの範囲外です)ですBFS-style algorithms(そして、この期間の後半まではグラフを取り上げません)。 不自然な例も避けたいです。私が考えているほとんどのことは、実際にシングルスレッド方式で解決する場合は、キューではなくリストを使用するだけです。処理とディスカバリーがインターリーブされる場合(検索など)、または長さ制限のあるバッファー(最後のNアイテムを維持するなど)のような特別な場合にのみ、キューを使用する傾向があります。実用的な範囲で、私は生徒に実際のプログラムで実際に物事を行うための良い方法を教えるだけでなく、機能を披露するおもちゃだけではありません。 例として使用できるが、他の最小限の事前知識を必要とする、キューの優れたシンプルなアルゴリズムまたはアプリケーションの提案はありますか?

2
制約付きのジョブキューを最適に設計するにはどうすればよいですか?
次の状況を考慮してください。 処理する必要のある多数の「ジョブ」を作成し、それらをキューに入れるプログラムがあります。 他のワーカープログラムで次の「ジョブ」を取得して、そのジョブを処理できるようにします。 各ジョブにはカテゴリがあります。 カテゴリはいくつあってもかまいません。 同じカテゴリの2つのジョブを別々のワーカーで同時に処理することはできません。 ワーカーは一度に1つのジョブを処理できます。 同じカテゴリの複数のジョブが同時に処理される可能性があるため、この状況では従来のキューは機能しませんが、これは許可されていません。 取得するジョブをワーカーに確認させ、そのジョブカテゴリに現在処理中の別のワーカーがあるかどうかを確認し、そうである場合は後で処理するためにジョブをキューに再送信します。これは、この問題を解決する非効率的な方法のようです。この問題を解決できるデータ構造または設計パターンはありますか? さらに説明が必要な場合は、お知らせください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.