(57)【要約】【課題】複数スレッドのデータ出力を一のファイルで出力するシステムにおいて、ファイル出力を効率的に行う。【解決手段】ブロック書き込み領域４０４にデータを書き込み中の状態をＯＮ、書き込み中でない状態をＯＦＦで示し、スレッド１が該書き込みを完了した場合又はブロック書き込み領域４０４が一杯になった時にはＯＦＦになるブロック書き込みフラグ４０３を有し、スレッド１は、データを書き込んでいたブロック書き込み領域４０４が一杯になり、かつバッファＡの他のブロック書き込み領域のいずれにもデータが書き込まれている場合に、ファイル出力フラグ４０２をＯＮにし、更にブロック書き込みフラグ４０３が全てＯＦＦである場合、複数のスレッドについてファイル出力が同時に行われることを防ぐファイル出力排他４０１の制御下、バッファＡに書き込まれたデータをファイル出力制御手段２０２へ送信する。【選択図】図１
2010067044.tif 000002
【特許請求の範囲】
【請求項１】
入力データを読み込む入力データ制御手段と、該入力データを前記入力データ制御手段から受信する複数のスレッドと、前記スレッドが受信したデータが一時的に書き込まれるバッファと、一つの前記バッファに書き込まれたデータを一つのファイルとして出力するファイル出力を行うファイル出力制御手段と、を有し、前記複数のスレッドのそれぞれに対応して前記バッファの一部をブロックとして割り当てるデータ処理装置において、
前記ファイル出力が、前記複数のスレッドについて同時に行われることを防ぐ排他制御をするファイル出力排他を備え、
前記バッファは、前記ファイル出力することをＯＮの状態で示すファイル出力フラグを有し、
前記ブロックは、
前記スレッドが受信したデータが書き込まれるブロック書き込み領域と、
前記ブロック書き込み領域に該データを書き込み中の状態をＯＮ、書き込み中でない状態をＯＦＦで示し、前記スレッドが該書き込みを完了した場合又は前記ブロック書き込み領域が一杯になった時にはＯＦＦになるブロック書き込みフラグと、
を一対で有し、
前記スレッドは、該データを書き込んでいた前記ブロック書き込み領域が一杯になり、かつ前記バッファが複数有する前記ブロックのブロック書き込み領域のいずれにも該データが書き込まれている場合に、前記ファイル出力フラグをＯＮにし、更に前記ブロック書き込みフラグが全てＯＦＦである場合、前記ファイル出力排他を獲得し、前記排他制御によって前記バッファに書き込まれたデータを前記ファイル出力制御手段へ送信することを特徴とするデータ処理装置。
【請求項２】
前記スレッドは、前記ファイル出力フラグがＯＮであっても、前記バッファの前記ブロック書き込みフラグのいずれかがＯＮである場合、前記ファイル出力をせずに前記バッファでの処理を終了することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記スレッドは、前記バッファの前記ファイル出力フラグがＯＮの場合、前記バッファへの書き込みが不可と判断し、他のバッファのブロック書き込み領域に前記スレッドが受信したデータを書き込むことを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
前記スレッドは、ファイル出力判定手段とファイル出力処理手段とを備え、
前記ファイル出力判定手段は、前記ファイル出力フラグがＯＮであって、前記バッファの前記ブロック書き込みフラグが全てＯＦＦである場合、前記ファイル出力排他を獲得し、かつ前記ファイル出力処理手段にファイル出力を通知し、
前記ファイル出力処理手段は、前記ファイル出力判定手段から該ファイル出力を通知された時、前記バッファに書き込まれたデータを前記ファイル出力制御手段へ送信し、該送信後、前記ファイル出力判定手段が獲得した前記ファイル出力排他を解除することを特徴とする請求項１乃至３に記載のデータ処理装置。
【請求項５】
前記スレッドは、
前記入力データ制御手段から前記入力データを受信するデータ受信手段と、
前記ファイル出力フラグがＯＦＦであり、かつ前記バッファに未だデータが書き込まれていないブロック書き込み領域があることを確認して、前記バッファが書き込み可であると判断する書き込み許可確認手段と、
前記ファイル出力フラグがＯＮ又はブロック書き込み領域のいずれにも既にデータが書き込まれていて、前記書き込み許可確認手段が前記バッファは書き込み不可と判断した時に、前記バッファ以外の他のバッファを検索し、空きブロックがあるバッファを確保する出力先ブロック変更手段と、
前記ファイル出力フラグがＯＦＦの時は前記バッファの前記ブロック書き込み領域に、前記書き込み許可確認手段が前記バッファは書き込み不可と判断した時は前記他のバッファのブロック書き込み領域に、前記データ受信手段が受信したデータを、それぞれ書き込むデータ書き込み手段と、
を、更に備え、
前記データ書き込み手段は、前記データ受信手段が受信したデータを書き込んでいる間は、該データを書き込んでいるブロックの前記ブロック書き込みフラグをＯＮにして、該書き込みが終了したら前記ブロック書き込みフラグをＯＦＦにすることを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
前記スレッドは、
前記データ書き込み手段が、前記データ受信手段が受信したデータを書き込むバッファ内で、未だ該データが書き込まれていないブロック書き込み領域の存在の有無を調べ、該バッファ内で使用されていないブロック書き込み領域が存在したら、新規ブロックとして確保する新規ブロック確保手段と、
該バッファ内で該データが未だ書き込まれていないブロック書き込み領域が存在しない場合は、該バッファの前記ファイル出力フラグをＯＮにして、新規にバッファを取得する新規バッファ取得手段と、
を更に備えることを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
入力データを読み込む入力データ制御手順と、バッファの一部を複数のスレッドのそれぞれに対応したブロックとして割り当て、前記入力データを前記スレッドと前記バッファとで処理する手順と、一つの前記バッファに書き込まれたデータを一つのファイルとして出力するファイル出力を行うファイル出力制御手順とを有するデータ処理方法において、
前記入力データを前記スレッドと前記バッファとで処理する手順は、
前記入力データを受信するデータ受信手順と、
前記ファイル出力することをＯＮの状態で示すファイル出力フラグがＯＦＦであり、かつ前記ブロックが有するブロック書き込み領域のうち、未だデータが書き込まれていないブロック書き込み領域があることを確認して、前記バッファが書き込み可であると判断する書き込み許可確認手順と、
前記書き込み許可確認手順で書き込み可であると判断された前記バッファの前記ブロック書き込み領域に前記データ受信手順が受信したデータを書き込み、かつ該データを書き込んでいる間は前記ブロック書き込み領域の前記ブロック書き込みフラグをＯＮにし、該書き込みが終了したら前記ブロック書き込みフラグをＯＦＦにするデータ書き込み手順と、
前記ブロック書き込み領域が一杯になり、かつ前記バッファ内のブロック書き込み領域のいずれにも前記データ受信手順が受信したデータが書き込まれている場合に、前記ファイル出力フラグをＯＮにする手順と、
前記ファイル出力フラグがＯＮであり、かつ前記バッファの前記ブロック書き込みフラグが全てＯＦＦであること、を確認するファイル出力判定手順と、
前記ファイル出力判定手順での前記確認で、前記ファイル出力フラグがＯＮで、前記バッファの前記ブロック書き込みフラグが全てＯＦＦである場合、前記ファイル出力が前記複数のスレッドについて同時に行われることを防ぐ排他制御を獲得して、前記バッファに書き込まれたデータを前記ファイル出力制御手順へ送信するファイル出力処理手順と、
を備えることを特徴とするデータ処理方法。
【請求項８】
前記ファイル出力判定手順は、前記ファイル出力フラグがＯＮであっても、前記ブロック書き込みフラグのいずれかがＯＮである場合、前記ファイル出力をせずに前記バッファでの処理を終了することを特徴とする請求項７に記載のデータ処理方法。
【請求項９】
前記ファイル出力処理手順は、ファイル出力判定手順とファイル出力処理手順とを含み、
前記ファイル出力判定手順は、前記ファイル出力フラグがＯＮであって、前記バッファの前記ブロック書き込みフラグが全てＯＦＦである場合、前記ファイル出力排他を獲得し、かつ前記ファイル出力処理手順にファイル出力を通知し、
前記ファイル出力処理手順は、前記ファイル出力判定手順から該ファイル出力を通知された時、前記バッファに書き込まれたデータを前記ファイル出力制御手順へ送信し、該送信後、前記ファイル出力判定手順が獲得した前記ファイル出力排他を解除することを特徴とする請求項７又は８に記載のデータ処理方法。
【請求項１０】
前記入力データを前記スレッドと前記バッファとで処理する手順は、
前記ファイル出力フラグがＯＦＦであり、かつ前記バッファ内のブロック書き込み領域のいずれにも前記データ受信手順が受信したデータが書き込まれているため、前記書き込み許可確認手順が前記バッファは書き込み不可であると判断した場合に前記バッファ以外の他のバッファを検索し、空きブロックがあるバッファを確保する出力先ブロック変更手順を更に備え、
前記データ書き込み手順は、前記空きブロックがあるバッファのブロック書き込み領域に、前記データ受信手順が受信したデータを書き込むことを特徴とする請求項７乃至９のいずれか１項に記載のデータ処理方法。
【請求項１１】
前記ファイル出力フラグをＯＮにする手順は、
前記データ書き込み手順で前記データ受信手順が受信したデータが書き込まれるバッファ内で、未だ該データが書き込まれていないブロック書き込み領域の存在の有無を調べ、該バッファ内で使用されていないブロック書き込み領域が存在したら、新規ブロックとして確保する新規ブロック確保手順と、
該バッファ内で該データが未だ書き込まれていないブロック書き込み領域が存在しない場合は、該バッファの前記ファイル出力フラグをＯＮにして、新規にバッファを取得する新規バッファ取得手順と、
を含むことを特徴とする請求項７乃至１０のいずれか１項に記載のデータ処理方法。
【請求項１２】
入力データを読み込む入力データ制御処理と、バッファの一部を複数のスレッドのそれぞれに対応したブロックとして割り当て、前記スレッドと前記バッファとでの前記入力データの処理と、一つの前記バッファに書き込まれたデータを一つのファイルとして出力するファイル出力を行うファイル出力制御処理とをコンピュータに実行させるデータ処理プログラムにおいて、
前記スレッドと前記バッファとでの前記入力データの処理は、
前記入力データを受信するデータ受信処理と、
前記ファイル出力することをＯＮの状態で示すファイル出力フラグがＯＦＦであり、かつ前記ブロックが有するブロック書き込み領域のうち、未だデータが書き込まれていないブロック書き込み領域があることを確認して、前記バッファが書き込み可であると判断する書き込み許可確認処理と、
前記書き込み許可確認処理で書き込み可であると判断された前記バッファの前記ブロック書き込み領域に前記データ受信処理が受信したデータを書き込み、かつ該データを書き込んでいる間は前記ブロック書き込み領域の前記ブロック書き込みフラグをＯＮにし、該書き込みが終了したら前記ブロック書き込みフラグをＯＦＦにするデータ書き込み処理と、
前記ブロック書き込み領域が一杯になり、かつ前記バッファ内のブロック書き込み領域のいずれにも前記データ受信処理が受信したデータが書き込まれている場合に、前記ファイル出力フラグをＯＮにする処理と、
前記ファイル出力フラグがＯＮであり、かつ前記バッファの前記ブロック書き込みフラグが全てＯＦＦであること、を確認するファイル出力判定処理と、
前記ファイル出力判定処理での前記確認で、前記ファイル出力フラグがＯＮで、前記バッファの前記ブロック書き込みフラグが全てＯＦＦである場合、前記ファイル出力が前記複数のスレッドについて同時に行われることを防ぐ排他制御を獲得して、前記バッファに書き込まれたデータを前記ファイル出力制御処理へ送信するファイル処理と、
をコンピュータに実行させることを特徴とするデータ処理プログラム。
【請求項１３】
前記ファイル出力判定処理は、前記ファイル出力フラグがＯＮであっても、前記ブロック書き込みフラグのいずれかがＯＮである場合、前記ファイル出力をせずに前記バッファでの処理を終了することを特徴とする請求項１２に記載のデータ処理プログラム。
【請求項１４】
前記ファイル処理は、ファイル出力判定処理とファイル出力処理とを含み、
前記ファイル出力判定処理は、前記ファイル出力フラグがＯＮであって、前記バッファの前記ブロック書き込みフラグが全てＯＦＦである場合、前記ファイル出力排他を獲得し、かつ前記ファイル出力処理にファイル出力を通知し、
前記ファイル出力処理は、前記ファイル出力判定処理から該ファイル出力を通知された時、前記バッファに書き込まれたデータを前記ファイル出力制御処理へ送信し、該送信後、前記ファイル出力判定処理が獲得した前記ファイル出力排他を解除することを特徴とする請求項１２又は１３に記載のデータ処理プログラム。
【請求項１５】
前記スレッドと前記バッファとでの前記入力データの処理は、
前記ファイル出力フラグがＯＦＦであり、かつ前記バッファ内のブロック書き込み領域のいずれにも前記データ受信処理が受信したデータが書き込まれているため、前記書き込み許可確認処理が前記バッファは書き込み不可であると判断した場合に前記バッファ以外の他のバッファを検索し、空きブロックがあるバッファを確保する出力先ブロック変更処理を更にコンピュータに実行させ、
前記データ書き込み処理は、前記空きブロックがあるバッファのブロック書き込み領域に、前記データ受信処理が受信したデータを書き込むことを特徴とする請求項１２乃至１４のいずれか１項に記載のデータ処理プログラム。
【請求項１６】
前記ファイル出力フラグをＯＮにする処理は、
前記データ書き込み処理で前記データ受信処理が受信したデータが書き込まれるバッファ内で、未だ該データが書き込まれていないブロック書き込み領域の存在の有無を調べ、該バッファ内で使用されていないブロック書き込み領域が存在したら、新規ブロックとして確保する新規ブロック確保処理と、
該バッファ内で該データが未だ書き込まれていないブロック書き込み領域が存在しない場合は、該バッファの前記ファイル出力フラグをＯＮにして、新規にバッファを取得する新規バッファ取得処理と、
を含むことを特徴とする請求項１２乃至１５のいずれか１項に記載のデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
複数スレッドのデータ出力を一つのファイルにして出力するシステムにおいて、ファイル出力を効率的に行うことが可能となるデータ処理装置、その方法及びそのプログラムに関する。
【背景技術】
【０００２】
情報処理において、出力元である複数のスレッドに対応してバッファの一部をブロックとして割り当て、一つのバッファに出力されたデータを一つのファイルとして外部出力するファイル出力システムがある。
【０００３】
このファイル出力のシステムには以下の２点の利点がある。
（１）スレッドがバッファ内のそのスレッドに割り当てられたブロックに出力することで、スレッドのバッファへの書き込みの際にスレッド間の排他制御を行う必要がなくなる。
（２）複数のスレッドの出力を一つのバッファにしてファイル出力を行うことで、ファイル数を減らすことができる。
【０００４】
このように、排他制御を行わず、ファイル出力を減らすことで、処理の高速化を実現してきた。
【０００５】
これらのシステムでは、ファイル出力を行う時は、各スレッドが作成しているそれぞれのブロック全てが一杯になった場合、又は全スレッドがそれぞれのバッファへの出力を完了したことが宣言された時(コミット時)に行っている。
【特許文献１】特開２０００−２２２２８１号公報
【特許文献２】特開２００１−０１４１３９号公報
【特許文献３】特開２００１−３５０６３８号公報
【特許文献４】特開２００６−１８５３６３号公報
【特許文献５】特開２００８−０４０９５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述のシステムでは、スレッド毎の出力量に偏りがあった場合、出力量の多いスレッドのブロックはすぐに埋まるが、出力量の少ないブロックが埋まらずバッファ内の全ブロックが一杯にならなくなり、バッファ内のデータをファイルに出力することが出来ずに、コミット時にファイル出力が集中してしまい、ファイル出力が遅延してしまう問題があった。
【０００７】
本発明は上記に鑑みてなされたもので、複数スレッドのデータ出力を一つのファイルにして出力するシステムにおいて、ファイル出力の遅延を回避し、ファイル出力を効率的に行うことが可能となるデータ処理装置、その方法及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述の課題を解決するため、本発明に係るデータ処理装置は、入力データを読み込む入力データ制御手段と、該入力データを前記入力データ制御手段から受信する複数のスレッドと、前記スレッドが受信したデータが一時的に書き込まれるバッファと、一つの前記バッファに書き込まれたデータを一つのファイルとして出力するファイル出力を行うファイル出力制御手段と、を有し、前記複数のスレッドのそれぞれに対応して前記バッファの一部をブロックとして割り当てるデータ処理装置において、前記ファイル出力が、前記複数のスレッドについて同時に行われることを防ぐ排他制御をするファイル出力排他を備え、前記バッファは、前記ファイル出力することをＯＮの状態で示すファイル出力フラグを有し、前記ブロックは、前記スレッドが受信したデータが書き込まれるブロック書き込み領域と、前記ブロック書き込み領域に該データを書き込み中の状態をＯＮ、書き込み中でない状態をＯＦＦで示し、前記スレッドが該書き込みを完了した場合又は前記ブロック書き込み領域が一杯になった時にはＯＦＦになるブロック書き込みフラグと、を一対で有し、前記スレッドは、該データを書き込んでいた前記ブロック書き込み領域が一杯になり、かつ前記バッファが複数有する前記ブロックのブロック書き込み領域のいずれにも該データが書き込まれている場合に、前記ファイル出力フラグをＯＮにし、更に前記ブロック書き込みフラグが全てＯＦＦである場合、前記ファイル出力排他を獲得し、前記排他制御によって前記バッファに書き込まれたデータを前記ファイル出力制御手段へ送信することを特徴とする。
【０００９】
上述の課題を解決するため、本発明に係るデータ処理方法は、入力データを読み込む入力データ制御手順と、バッファの一部を複数のスレッドのそれぞれに対応したブロックとして割り当て、前記入力データを前記スレッドと前記バッファとで処理する手順と、一つの前記バッファに書き込まれたデータを一つのファイルとして出力するファイル出力を行うファイル出力制御手順とを有するデータ処理方法において、前記入力データを前記スレッドと前記バッファとで処理する手順は、前記入力データを受信するデータ受信手順と、前記ファイル出力することをＯＮの状態で示すファイル出力フラグがＯＦＦであり、かつ前記ブロックが有するブロック書き込み領域のうち、未だデータが書き込まれていないブロック書き込み領域があることを確認して、前記バッファが書き込み可であると判断する書き込み許可確認手順と、前記書き込み許可確認手順で書き込み可であると判断された前記バッファの前記ブロック書き込み領域に前記データ受信手順が受信したデータを書き込み、かつ該データを書き込んでいる間は前記ブロック書き込み領域の前記ブロック書き込みフラグをＯＮにし、該書き込みが終了したら前記ブロック書き込みフラグをＯＦＦにするデータ書き込み手順と、前記ブロック書き込み領域が一杯になり、かつ前記バッファ内のブロック書き込み領域のいずれにも前記データ受信手順が受信したデータが書き込まれている場合に、前記ファイル出力フラグをＯＮにする手順と、前記ファイル出力フラグがＯＮであり、かつ前記バッファの前記ブロック書き込みフラグが全てＯＦＦであること、を確認するファイル出力判定手順と、前記ファイル出力判定手順での前記確認で、前記ファイル出力フラグがＯＮで、前記バッファの前記ブロック書き込みフラグが全てＯＦＦである場合、前記ファイル出力が前記複数のスレッドについて同時に行われることを防ぐ排他制御を獲得して、前記バッファに書き込まれたデータを前記ファイル出力制御手順へ送信するファイル出力処理手順と、を備えることを特徴とする。
【００１０】
上述の課題を解決するため、入力データを読み込む入力データ制御処理と、バッファの一部を複数のスレッドのそれぞれに対応したブロックとして割り当て、前記スレッドと前記バッファとでの前記入力データの処理と、一つの前記バッファに書き込まれたデータを一つのファイルとして出力するファイル出力を行うファイル出力制御処理とをコンピュータに実行させるデータ処理プログラムにおいて、前記スレッドと前記バッファとでの前記入力データの処理は、前記入力データを受信するデータ受信処理と、前記ファイル出力することをＯＮの状態で示すファイル出力フラグがＯＦＦであり、かつ前記ブロックが有するブロック書き込み領域のうち、未だデータが書き込まれていないブロック書き込み領域があることを確認して、前記バッファが書き込み可であると判断する書き込み許可確認処理と、前記書き込み許可確認処理で書き込み可であると判断された前記バッファの前記ブロック書き込み領域に前記データ受信処理が受信したデータを書き込み、かつ該データを書き込んでいる間は前記ブロック書き込み領域の前記ブロック書き込みフラグをＯＮにし、該書き込みが終了したら前記ブロック書き込みフラグをＯＦＦにするデータ書き込み処理と、前記ブロック書き込み領域が一杯になり、かつ前記バッファ内のブロック書き込み領域のいずれにも前記データ受信処理が受信したデータが書き込まれている場合に、前記ファイル出力フラグをＯＮにする処理と、前記ファイル出力フラグがＯＮであり、かつ前記バッファの前記ブロック書き込みフラグが全てＯＦＦであること、を確認するファイル出力判定処理と、前記ファイル出力判定処理での前記確認で、前記ファイル出力フラグがＯＮで、前記バッファの前記ブロック書き込みフラグが全てＯＦＦである場合、前記ファイル出力が前記複数のスレッドについて同時に行われることを防ぐ排他制御を獲得して、前記バッファに書き込まれたデータを前記ファイル出力制御処理へ送信するファイル処理と、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、ファイル出力フラグがＯＮであって、更にブロック書き込みフラグが全てＯＦＦである場合、バッファ内のブロックが一杯にならなくともファイル出力を行うことが出来るので、複数スレッドのデータ出力を一つのファイルにして出力するシステムにおいて、ファイル出力の遅延を回避し、ファイル出力を効率的に行うことが可能となるデータ処理装置、その方法及びそのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１２】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１３】
図１は、本実施の形態に係るデータ処理装置の構成図である。この図１では、入力データ１０１、出力ファイル１０２及びデータ処理装置１０３が存在する。
【００１４】
データ処理装置１０３は、入力データ１０１を読み込む入力データ制御手段２０１、ファイル出力制御手段２０２、ファイル出力排他４０１、入力データ制御手段２０１からデータを受信して処理する複数のスレッド、データが一時的に書き込まれるバッファ及び一つのバッファに書き込まれたデータを一つのファイルとして出力するファイル出力制御手段２０２を備える。
【００１５】
スレッドには、データ受信手段３０１、書き込み許可確認手段３０２、出力先ブロック変更手段３０３、データ書き込み手段３０４、新規ブロック確保手段３０５、新規バッファ取得手段３０６、ファイル出力判定手段３０７及びファイル出力処理手段３０８が存在する。
【００１６】
バッファには、ファイル出力フラグ４０２と、複数のブロックが存在し、ブロックには、ブロック書き込みフラグ４０３及びブロック書き込み領域４０４が一対で存在する。
【００１７】
ファイル出力排他４０１は、バッファに書き込まれたデータをファイルとして出力するファイル出力を行う時に、複数のスレッドについて同時にファイル出力することを防ぐ排他である。ファイル出力判定手段３０７が、図１のバッファＡにおいて、ファイル出力フラグ４０２がＯＮ、ファイル出力排他４０１が取得可、各ブロックのブロック書き込みフラグ４０３がＯＦＦならファイル出力を行うと判断し、ファイル出力排他４０１を獲得し、排他制御を行う。
【００１８】
ファイル出力フラグ４０２は、バッファをファイル出力することを示すフラグである。新規バッファ取得手段３０６が、新規ブロック確保手段３０５から新バッファ取得を通知されたら、バッファをファイル出力すると判断し、ファイル出力フラグ４０２をＯＮにする。
【００１９】
ファイル出力フラグ４０２がＯＮの状態では、バッファをファイル出力することになるので、バッファが有する各ブロックへのデータの書き込みができなくなる。ただし、ブロックにデータを書き込み中の時にファイル出力フラグ４０２がＯＮとなった場合は、そのブロックへのデータの書き込みは中断されない。
【００２０】
ブロック書き込みフラグ４０３は、データ書き込み手段３０４がブロックにデータを書き込んでいる状態か否かを示すフラグである。データ書き込み手段３０４はブロックにデータを書き込んでいるときはブロック書き込みフラグ４０３をＯＮにして、データを書き込み終えたときはブロック書き込みフラグ４０３をＯＦＦにする。
【００２１】
ブロック書き込み領域４０４は、データ書き込み手段３０４がデータを書き込むブロックの領域である。
【００２２】
次に各装置、手段の働きを説明する。
【００２３】
入力データ制御手段２０１は、入力データ１０１からデータを読み込み、データ受信手段３０１にデータを送る。
【００２４】
データ受信手段３０１がデータ受信後の処理は、図１に示したように、書き込み領域確保処理と、データ書き込み処理と、ファイル出力処理と、に大別される。
【００２５】
まず書き込み領域確保処理では、書き込み許可確認手段３０２は、ファイル出力フラグ４０２及びブロック書き込み領域４０４の書き込みの有無から出力先バッファ変更又は新規ブロック確保を判別して、出力先ブロック変更手段３０３に通知する。
【００２６】
ファイル出力フラグ４０２がＯＮなら、バッファへのデータ書き込み不可と判断し、出力先ブロック変更手段３０３に出力先バッファ変更と通知する。又、ブロック書き込み領域のいずれにも既にデータが書き込まれている場合は、出力先バッファが存在せず、バッファにデータ書き込み不可と判断し、出力先ブロック変更手段３０３に出力先バッファ変更と通知する。ファイル出力フラグ４０２がＯＦＦでブロック書き込み領域４０４が確保されていなかったら、出力先ブロック変更手段３０３に新規ブロック確保と通知する。ファイル出力フラグ４０２がＯＦＦで、かつ、このバッファに未だデータが書き込まれていないブロック書き込み領域４０４があることによりブロック書き込み領域４０４が確保されていたら、バッファにデータ書き込み可と判断し、データ書き込み手段３０４に出力先ブロックのブロック書き込み領域４０４を通知する。
【００２７】
出力先ブロック変更手段３０３は、書き込み許可確認手段３０２から出力先バッファ変更と通知されたら、空きブロックがある出力先バッファを検索して出力先バッファを変更し、新規ブロックのブロック書き込み領域４０３を確保して、データ書き込み手段３０４に出力先ブロックのブロック書き込み領域４０４を通知する。書き込み許可確認手段３０２から新規ブロック確保と通知されたら、バッファから空きブロックのブロック書き込み領域４０４を確保して、データ書き込み手段３０４に出力先ブロックのブロック書き込み領域４０４を通知する。
【００２８】
次いで、データ書き込み処理では、データ書き込み手段３０４は、データ受信手段３０１が受信したデータを書き込み許可確認手段３０２又は出力先ブロック変更手段３０３から得られたブロック書き込み領域４０４に書き込み、ブロックに書き込んでいる間はブロック書き込みフラグ４０３をＯＮにして、書き込みが終了したらブロック書き込みフラグ４０３をＯＦＦにする。データ書き込み中にブロック書き込み領域４０４が一杯になったら、新規ブロック確保手段３０５にブロック書き込み領域４０４が一杯になったことを通知する。
【００２９】
新規ブロック確保手段３０５は、データ書き込み手段３０４から１ブロックが一杯になったことを通知されたら、バッファ内で使用されていないブロック書き込み領域４０４の存在の有無を調べ、使用されていないブロック書き込み領域４０４が存在したら、新規ブロックを確保する。使用されていないブロック書き込み領域４０４が存在しなかったら、新規バッファ取得手段３０６に新規バッファ取得を通知する。
【００３０】
新規バッファ取得手段３０６は、新規ブロック確保手段３０５から新バッファ取得を通知されたら、ファイル出力フラグ４０１をＯＮにして、新規に取得したバッファに出力先バッファを変更する。
【００３１】
更に、ファイル出力処理では、ファイル出力判定手段３０７は、ファイル出力フラグ４０２がＯＮ、ファイル出力排他４０１が取得可、各ブロックのブロック書き込みフラグ４０３がＯＦＦならファイル出力を行うと判断し、ファイル出力排他４０１を獲得し、ファイル出力処理手段３０８にファイル出力を通知する。
【００３２】
ファイル出力処理手段３０８は、ファイル出力判定手段３０７からファイル出力を通知されたら、バッファに書き込まれたデータをファイル出力制御手段２０２へ送信する。このデータ送信後、ファイル出力判定手段３０７が獲得したファイル出力排他４０１を解除する。
【００３３】
又、ファイル出力処理手段３０８は、データを取得したバッファの出力フラグ４０２及びブロック書き込みフラグ４０３の全てをＯＦＦにすることにより、当該バッファを開放する。
【００３４】
ファイル出力制御手段２０２はファイル出力処理手段３０８から得られたバッファを出力ファイル１０２として出力する。
【００３５】
次に、本実施の形態の動作について説明する。
【００３６】
図２は動作の流れを示すフローチャートであり、図３〜６は、図１のバッファに書き込まれているデータの状態変位の具体例を表している図である。
【００３７】
ここで、バッファの状態は、図３の状態とし、スレッド１がブロック２を使用しており、スレッド２がブロック３を使用している。２つのスレッド共にデータ書き込み中ではなく、ブロックの書き込みフラグはＯＦＦとなっている。
【００３８】
次に、図３の状態から、スレッド１、スレッド２及びスレッド３が、データ書き込みを開始した時（図４の状態）の動作を示す。
【００３９】
スレッド１、スレッド２及びスレッド３は、共に入力データ制御手段２０１から書き込みデータを受信（図２のステップＡ１）する。
【００４０】
スレッド１及びスレッド２は、それぞれが有する書き込み許可確認手段３０２で、バッファＡのファイル出力フラグ４０２がＯＦＦであることを確認（図２のステップＡ２）し、バッファにデータ書き込み可と判断して、それぞれが有するデータ書き込み手段３０４に出力先ブロックのブロック書き込み領域４０４を通知する。
【００４１】
スレッド３は、スレッド３が有する書き込み許可確認手段３０２でバッファＡのファイル出力フラグ４０２がＯＦＦであることを確認し（図２のステップＡ２）、スレッド３が有するブロック書き込み領域４０４から出力先ブロックが確保されていないことを確認（図２のステップＡ４）し、スレッド３が有する出力先ブロック変更手段３０３に新規ブロック確保と通知する。スレッド３が有する出力先ブロック変更手段３０３は、スレッド３が有する書き込み許可確認手段３０２から新規ブロック確保と通知されたので、バッファＡから空きブロックのブロック１を確保して、スレッド３が有するデータ書き込み手段３０４に出力先ブロックのブロック書き込み領域４０４を通知する（図２のステップＡ５）。
【００４２】
スレッド１、スレッド２及びスレッド３は、書き込みを開始する（図４の状態）。それぞれのスレッドが有するデータ書き込み手段３０４が各ブロックのブロック書き込み中フラグ４０３をＯＮにして（図２のステップＡ６）、それぞれのブロック書き込み領域４０４にデータを書き込む（図２のステップＡ７）。
【００４３】
次に図４の状態から、スレッド２及びスレッド３がデータ書き込みを終了した時（図５の状態）の動作を示す（スレッド１はデータ書き込み中）。
【００４４】
スレッド２は、データ書き込みによりブロック３が一杯となり、スレッド２が有するデータ書き込み手段３０４が、スレッド２が有する新規ブロック確保手段３０５にブロック書き込み領域４０４が一杯になったことを通知する。スレッド２が有する新規ブロック確保手段３０５がバッファＡ内に使用されていないブロック書き込み領域４０４、すなわち未だデータが書き込まれていないブロック書き込み領域４０４が存在するか否かをチェックする（図２のステップＡ８）。
【００４５】
ここで、使用されていないブロック書き込み領域４０４とは、未だいずれのスレッドもデータを書き込んでいないブロック書き込み領域４０４のことをいう。
【００４６】
図３の状態（３）では使用されていないブロックは存在しない、すなわちバッファＡのブロック書き込み領域４０４の全てにデータが書き込まれているので、スレッド２が有する新規バッファ取得手段３０６に新規バッファ取得を通知する。スレッド２が有する新規バッファ取得手段３０６は、バッファＡのファイル出力フラグ４０２をＯＮにして（図２のステップＡ９）、新規バッファＢを取得し、出力先バッファをバッファＢに変更し（図２のステップＡ１０）、データ書き込み後データ書き込み手段３０４がブロック３のブロック書き込みフラグ４０３をＯＦＦにする（図２のステップＡ１１）。
【００４７】
データ書き込み終了後、スレッド２が有するファイル出力判定手段３０７が、バッファＡのファイル出力フラグ４０２と各ブロックのブロック書き込みフラグ４０３とをチェックし（図２のステップＡ１２）、ブロック２のブロック書き込みフラグ４０３がＯＮであることを確認し、バッファＡでのスレッド２に係る処理を終了する。
【００４８】
スレッド３は、データを書き込んでもブロック１が一杯にならない場合（図２のステップＡ８）、データ書き込み後、スレッド３が有するデータ書き込み手段３０４がブロック１のブロック書き込みフラグ４０３をＯＦＦにする（図２のステップＡ１１）。
【００４９】
スレッド２と同じく、スレッド３が有するファイル出力判定手段３０７が、バッファＡのファイル出力フラグ４０１と各ブロックのブロック書き込みフラグ４０３とをチェックし（図２のステップＡ１２）、ブロック２のブロック書き込みフラグ４０３がＯＮであることを確認し、バッファＡでのスレッド３に係る処理を終了する。
【００５０】
次に、図５の状態から、スレッド１が書き込みを終了し、スレッド２及びスレッド３が新たにデータ書き込みを開始した時（図６の状態）の動作を示す。
【００５１】
スレッド１は、データを書き込んでもブロック２が一杯にならない場合（図２のステップＡ８）、データ書き込み後データ書き込み手段３０４がブロック２のブロック書き込みフラグ４０３をＯＦＦにする（図２のステップＡ１1）。
【００５２】
データ書き込み終了後、スレッド１が有するファイル出力判定手段３０７が、バッファＡのファイル出力フラグ４０１と各ブロックのブロック書き込みフラグ４０３をチェックするファイル出力フラグ・ブロック書き込みフラグ確認を行う（図２のステップＡ１２）。ここで、各ブロックのブロック書き込みフラグ４０３がＯＦＦ、ファイル出力フラグ４０２がＯＮであるので、ファイル出力を行うと判断し（図２のステップＡ１２）、スレッド１が有するファイル出力処理手段３０８にファイル出力を通知する。
【００５３】
スレッド１が有するファイル出力処理手段３０８は、スレッド１が有するファイル出力判定手段３０７からファイル出力を通知され、バッファＡのファイル出力排他４０１を獲得し（図２のステップＡ１４）、バッファＡをファイル出力制御手段２０２へ送り、ファイル出力制御手段２０２がバッファをファイル出力する（図２のステップＡ１５）。
【００５４】
バッファＡをファイル出力制御２０２がファイル出力後、ファイル出力排他４０１を解除し（図２のステップＡ１６）、バッファＡを開放する（図２のステップＡ１７）。（図３の状態（４）のスレッド１、ブロック２参照）。
【００５５】
スレッド２は、図５の状態で出力先バッファをバッファＢに変更しているので、書き込み許可確認手段３０２がデータ書き込み手段３０４にバッファＢのブロック書き込み領域４０４を通知する。データ書き込み手段３０４は、書き込み許可確認手段３０２から通知されたブロック書き込み領域４０４にデータを書き込む。
【００５６】
スレッド３は、バッファＡのファイル出力フラグ４０２がＯＮなので、バッファＡにデータ書き込み不可と判断し、出力先ブロック変更手段３０３に出力先バッファ変更と通知する。
【００５７】
出力先ブロック変更手段３０３は、書き込み許可確認手段３０２から出力先バッファ変更と通知されたので、空きブロックがある出力先バッファを検索して出力先バッファをバッファＢに変更し、新規ブロックのブロック書き込み領域４０４を確保して、データ書き込み手段３０４に出力先ブロックのブロック書き込み領域４０４を通知する。
【００５８】
データ書き込み手段３０４は、書き込み許可確認手段３０２から通知されたブロック書き込み領域４０４にデータを書き込む。
【産業上の利用可能性】
【００５９】
本発明は、通話料金の課金システムのように大量に発生するイベントを効率よく短時間で処理することが求められるシステムに適している。
【図面の簡単な説明】
【００６０】
【図１】本実施の形態に係るデータ処理装置の構成図である。
【図２】本実施の形態に係るデータ処理装置の動作の流れを示すフローチャートである。
【図３】本実施の形態に係るデータ処理装置のバッファに書き込まれているデータの状態変位の具体例を表している図である。
【図４】本実施の形態に係るデータ処理装置のバッファに書き込まれているデータの状態変位の具体例を表している図である。
【図５】本実施の形態に係るデータ処理装置のバッファに書き込まれているデータの状態変位の具体例を表している図である。
【図６】本実施の形態に係るデータ処理装置のバッファに書き込まれているデータの状態変位の具体例を表している図である。
【符号の説明】
【００６１】
１０１  入力データ
１０２  出力ファイル
１０３  データ処理装置
２０１  入力データ制御手段
２０２  ファイル出力制御手段
３０１  データ受信手段
３０２  書き込み許可確認手段
３０３  出力先ブロック変更手段
３０４  データ書き込み手段
３０５  新規ブロック確保手段
３０６  新規バッファ取得手段
３０７  ファイル出力判定手段
３０８  ファイル出力処理手段
４０１  ファイル出力排他
４０２  ファイル出力フラグ
４０３  ブロック書き込みフラグ
４０４  ブロック書き込み領域
【図１】
2010067044.tif 000003
【図２】
2010067044.tif 000004
【図３】
2010067044.tif 000005
【図４】
2010067044.tif 000006
【図５】
2010067044.tif 000007
【図６】
2010067044.tif 000008