Haruyuki Mohri Blog(Delphi)

毛利春幸のブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

delphiには簡単に使えるキューコンテナがあります。

以前の記事で、はやしさんがQueueについて書かれている記事があります。
単純なキューと循環キュー - @IT

DelphiはXE4ぐらい以降(あいまい)に、いろんなコンテナが使えるライブラリを提供しています。
殆どがSystem.Generics.Collections.pasに入ってます。
その中のキュー(TQueue)を試してみました。


procedure TForm1.FormCreate(Sender: TObject);
var
queue: TQueue<String>;
i: Integer;
max_count: Integer;
begin
queue := TQueue<String>.Create;
try
for i := 0 to 10 do
queue.Enqueue(Format('Enqueue(%d)', [i])); //Put in queue.

max_count := queue.Count;

for i := 0 to max_count-1 do
Memo1.Lines.Append( queue.Dequeue ); //remove and calling.
finally
queue.DisposeOf;
end;
end;


文字列をバッファに収納して出すだけです。
シングルスレッドではあまり用事が無いかもしれませんが
入出力のスレッドが別の場合このQueueを使えば管理が楽になります。

System.Generics.Collectionsの中にはTThreadedQueueと言う物もあります。
これの場合は スレッドにキューが貯まりすぎないような工夫が盛り込まれているみたいです。
「AQueueDepth is the length of the queue, which is by default set to 10.」だったりします。

delphiの場合<T>とすると C++のtemplate的な扱いになるみたいです。
template宣言無しです。

今回TQueue<String>ですが、classを作ってQueue<original_class>も可能だと思います。

スポンサーサイト
  1. 2015/08/25(火) 12:36:45|
  2. 未分類

Delphiで async/await 非同期みたいな事をするには

Delphiで async/awaitみたいな実装するには
TTask.Futureを使えば簡単です。

uses System.Threading




TThread.CreateAnonymousThread()と同じような感じですが
IFuture<>で待ってるみたいなのです。

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/08/21(金) 15:00:59|
  2. Delphi

tried the "CreateAnonymousThread". using a "TRESTClient" of "Delphi"

tried the "std::thread". using a "TRESTClient" of "C++Builder"
↑ここで書いたC++BuilderのコードをDelphiで書くとこんな感じです。


最近MarkDownで書くのでFC2ブログ書くのがすごいめんどうです。

Delphi XE7のRESTコンポーネントを使って、天気予報を取得する - 山本隆の開発日誌
山本隆さんが詳しくTRESTClient使い方を書いておられます
  1. 2015/08/14(金) 16:57:35|
  2. Delphi

Profile

Twitter...

最近の記事

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。