問題タブ [fifo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1035 参照

c - Unix FIFOを正しく動作させるのに問題がありますか?

Linuxで単純なデーモンを作成しようとしています。これにより、FIFOが作成され、FIFOに書き込まれたものがすべて収集され、後でそのデータがファイルに書き込まれます。

私の期待は、デーモンがFIFOを作成したら、「echo text>/myfifo」を繰り返し実行できることです。完了したら、「echo quit> / myfifo」を実行すると、プログラムが終了し、すべてのデータがディスクに書き込まれます。

現在、FIFOにさらにデータがあるかどうかを知るためにpoll()を使用しています。これは、最初にデータをFIFOにエコーするまでは正常に機能します。データは正常にエコーされますが、その後、ポーリングは継続的にSIGHUPを返します。

各プロセスがFIFOに書き込んだ後、FIFOをリセット(または閉じて再度開く)する必要がありますか?

私のコードの擬似コードは次のようになります。

0 投票する
5 に答える
294 参照

python - 制限のある元に戻すストレージを構築するには?

限られた元に戻すバッファーを格納するデータ構造を構築したい、たとえば以下の疑似コードを使用して 6 dict データを格納します。

私の質問は、既存の組み込みデータ型または標準ライブラリ型をそのような目的で使用できるかということです。

そして、そのような構造が1つの構造インスタンスにマルチタイプを格納できる可能性はありますか?たとえば、dictと自己定義クラスを一度に格納したい場合は?

ありがとう!

Rg、

KC

0 投票する
2 に答える
404 参照

.net - .NETの同時スレッドからFIFOを読み書きできますか?

Queue<T>ビデオのキャッシュにを使用しています。アイデアは、データを入力し(Enqueue)、再生を開始し(Dequeue)、データが到着したら継続的に入力し直すことです。バックグラウンドスレッドから埋め戻し部分を実行できますか?

0 投票する
4 に答える
15994 参照

c++ - C ++ / QtLinuxアプリからFIFO/名前付きパイプを1行ずつ読み取るにはどうすればよいですか?

C ++ / QtLinuxアプリからFIFO/名前付きパイプを1行ずつ読み取るにはどうすればよいですか?

今日、QtプログラムのFIFOを開いて読み取ることはできますが、プログラムにデータを1行ずつ読み取ることはできません。Qtはファイル全体を読み取ります。つまり、「送信者」がセッションを閉じるまで待機します。

いくつかのシェルコマンドの例を見て、アプリに何をさせたいかを示しましょう。

最初にFIFOを作成します

次に、猫を使用してFIFOから読み取ることができます

そして、別の猫と一緒にデータを送信します

そして、何かを入力し始めると、Enterキーを押すたびにリーダーに到達します。そして、Ctrl + Dで閉じると、両側が終了します。

これで、送信者はQTextStreamを使用して簡単に作成できます。送信するときに、フラッシュする必要があります。

しかし、行ごとに読み取る小さなリーダーを書くために、私は今立ち往生しています。Qtlibでのすべての試行は、データを取得することになりますが、送信者がFIFOでfile.close()を使用するまでは行われません。 。私が猫を使って読むときに起こるように、彼がフラッシュするときではありません。

この例のように:

私は何が欠けていますか?

ストリームなどで何らかのisReadyやlineAvailableを使用する必要があるように感じますが、ドキュメントに適切なものが見つかりません...

/ありがとう


低レベルのcスタイルを使用して、一度に1文字ずつ読み取ると、Imが検索しているスタイルが得られます。しかし、同じQtスタイルを実行できると便利です。


更新

デバッガーを起動すると、プログラムがreadLine()でハングし、相手がFIFOを閉じるまで続行しません。

そして、私は「>>」を使用して同じようになります

0 投票する
3 に答える
6776 参照

java - 独自のクラス オブジェクト用に独自の FIFO キュー クラスを作成して、それを埋めますか?

独自のクラス オブジェクトで満たされた FIFO キューを作成しようとしています。
この例を見つけましたが、 < E > を < PCB > に置き換えると機能しません:

0 投票する
3 に答える
1378 参照

c# - C# ブロック FIFO キューがメッセージをリークすることはありますか?

私は学術的なオープン ソース プロジェクトに取り組んでおり、C# で高速ブロッキング FIFO キューを作成する必要があります。私の最初の実装では、単純に同期キュー (動的拡張を使用) をリーダーのセマフォ内にラップしました。

これは、教科書にある静的配列を使用した古典的な FIFO キューの実装です。ポインターをアトミックにインクリメントするように設計されており、到達したときにポインターをゼロに戻すことはできないため (容量-1)、モジュロを別々に計算します。理論的には、Interlocked を使用することは、インクリメントを行う前にロックすることと同じです。セマフォがあるため、複数のプロデューサー/コンシューマーがキューに入る可能性がありますが、キュー ポインターを変更できるのは一度に 1 つだけです。まず、Interlocked.Increment は最初にインクリメントしてから戻るため、ポスト インクリメント値を使用して、配列内の位置 1 からストア項目を開始することに制限されていることを既に理解しています。問題ありません、一定の値になったら0に戻ります

それの何が問題なのですか?高負荷で実行していると、キューが NULL 値を返すことがあることは信じられないでしょう。繰り返しますが、キューにnullをエンキューするメソッドはないと確信しています。念のために Enqueue に null チェックを入れてみましたが、エラーは発生しませんでした。そのためのテストケースをVisual Studioで作成しました(ちなみに私はまぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁんのようにデュアルコアCPU使ってます)

コンシューマ スレッドが null を取得すると、エラーがカウントされます。1 つのプロデューサーと 1 つのコンシューマーでテストを実行すると、成功します。2 つのプロデューサと 2 つのコンシューマ、またはそれ以上でテストを実行すると、2000 のリークが検出されるという惨事が発生します。Enqueue メソッドに問題がある可能性があることがわかりました。設計上の契約により、プロデューサーは空 ( null )のセルにのみ書き込むことができますが、コードをいくつかの診断で変更すると、プロデューサーが空でないセルに書き込みを試みていることがわかりました。 " データ。

「ひどい」例外が頻繁に発生します。しかし、インクリメントはアトミックであり、ライターのセマフォは空き配列セルと同じ数のライターしか許可しないため、同時書き込みから競合が発生するのは奇妙です。

誰かがそれを手伝ってくれますか?あなたのスキルと経験を私と共有していただければ幸いです。

ありがとうございました。

0 投票する
4 に答える
16738 参照

c - C での FIFO キューの実装

組み込みアプリケーションの場合、ANSI C を使用して構造体の先入れ先出し (FIFO) キューを実装しようとしています。これを行う最も簡単な方法は、リンクされたリストを実装して、各構造に含まれるようにすることです。キュー内の次へのポインター。したがって、構造体自体を次のように定義します。

ここまでは順調ですね。キュー内の最初と最後のアイテムへのポインターを次のように定義するとします。

...次に、(たとえば) 次のように指定して、キューに新しいアクションを追加できるようにしたいと考えています。

...したがって、戻ると、lastAction は、キュー内で新しく作成された最後のアクションへのポインターになります。したがって、アクションをキューに追加するルーチンは次のようになります。

このコードがコンパイルされないことを除けば、すべてうまくいきます。エラーは次の行にあります

...コンパイラは、「->」の左側の項目が有効な構造体ではないと主張しています。確かに、しかし、そうでなければなりません。実際、完全に冗長なキャストであるべきことを行う場合:

...その後、コンパイラは非常に満足しています。ただし、エラーメッセージが、ここで間違っている可能性がある微妙な何かを示唆しているのではないかと心配しています. ですから (要点を言えば)、なぜコンパイラが満足していないのか、そして私がここでやろうとしていることを行うためのより良い方法があるかどうか、誰か教えてもらえますか?

0 投票する
2 に答える
869 参照

python - 名前空間をサポートする FIFO キューを実装する方法

Google App Engine db.Model に基づいて FIFO キューを処理するために、次のアプローチを使用しています (この質問を参照してください)。

このキューは期待どおりに機能します (非常に良好)。

現在、私のコードには、遅延キューによって呼び出されるこの FIFO キューにアクセスするメソッドがあります。

独自のキューにアクセスする必要がある特定のクライアントを表す client_ID パラメータを追加して、このメソッドとキュー データ構造を強化したいと考えています。何かのようなもの:

client_ID を認識できるようにキューをコーディングするにはどうすればよいですか?

制約:
- クライアントの数は動的であり、事前定義されていません
- Taskqueue はオプションではありません (1. 最大 10 個のキュー 2. 自分のキューを完全に制御したい)

新しい名前空間 APIを使用してこの動作を追加する方法を知っていますか(webapp.RequestHandler から db.Model を呼び出していないことを思い出してください)。
別のオプション:client_ID db.StringPropertyプル メソッドにフィルターを使用して QueueItem に追加できます。

もっと良いアイデアはありますか?

0 投票する
1 に答える
460 参照

c# - 以前の検索をキャッシュするための戦略 (ASP.NET)

ユーザーが場所を検索できるASP.NET MVC 2 Web アプリケーション (.NET 4、C#) があります。

このページには、多くの Web サイトと同様に、オートコンプリート ボックスが実装されています。(グーグル、ユーチューブなど)

ここで、サーバーへの AJAX 呼び出しは、データベースへのストアド プロシージャ呼び出しになります。(効率的ではありますが、遅いタイピングでは多くのラウンドトリップが発生する可能性があります)。

最後の 100 件の検索の結果をキャッシュする戦略をどのように作成できるのでしょうか?

呼び出しはクライアント側で AJAX を介して行われるため、OutputCache を使用できません。ストアド プロシージャの出力 (クエリテキストの一致した場所のリスト) をキャッシュする必要があります。

つまり、多くの人が「ニューヨーク」または「サンフランシスコ」を検索し、このデータは手動で管理者を変更することによってのみ変更されます (たとえば、キャッシュを手動で無効にすることができます)。

では、最近の 100 件の検索をキャッシュするにはどうすればよいでしょうか。私は FIFO のような機能を期待していました。キャッシュに既に 100 件の検索があった場合、最も古い検索が破棄され、すべてが下に移動されます。

コードを次のようにしたい:

明らかな選択は .NET Queueになると思いますか?

でも使ったことがないので、アドバイスお願いします。get/set の同時実行をどのように実装しますか? 完全にロックされたシングルトンを使用する必要がありますか? この目的でキューを使用した人はいますか? 他にどのようなオプションがありますか? スタック内のアイテムの数を制限するには、ほとんどカスタム キューが必要です。

ご協力いただきありがとうございます。

0 投票する
1 に答える
152 参照

c - open() はプログラムを終了させます

次のプログラムを使用して fifo に書き込みます。

このプログラムを起動したら、別のシェルを起動してそこに入力します

プログラムがパイプに何かを書き込んでいることがわかり、読み取りシェルで出力を確認できます。CTRL^C を使用して cat コマンドを停止すると、FIFO Writer も終了し、エラー メッセージは表示されません。これの理由は何ですか?エラーがスローされないのはなぜですか?

奇妙なことに、Eclipse CDT で上記のコードを開始し、読み取りシェルを CTRL^C で閉じると、プログラムは "Error: 3" を出力し続けます。

あなたのアイデアを楽しみにしています、ハインリッヒ