(57)【要約】【課題】同一のアプリケーションプログラムを多重で実行するような場合であっても、高負荷状態に陥ることを防止することが可能なサーバ装置及びプログラムを提供する。【解決手段】販売データ処理装置との間で授受されるデータに対し、データ処理を実行するためのアプリケーションプログラムを記憶する記憶手段と、前記記憶手段に記憶されたアプリケーションプログラムのうち、特定のアプリケーションプログラムに対する実行指示を検知する検知手段と、前記検知手段が前記実行指示を検知する毎に、前記特定のアプリケーションプログラムを実行する処理単位を生成する生成手段と、前記生成手段が生成した前記処理単位の順に、当該処理単位を識別するための識別子をキューに登録して管理する管理手段と、同時に実行される前記処理単位の個数が所定数以下となるよう、前記キューに先に登録された識別子の処理単位から順に実行させる制御手段と、を備える。【選択図】図３
2018147408.tif 000002
【特許請求の範囲】
【請求項１】
販売データ処理装置と通信可能なサーバ装置であって、
前記販売データ処理装置との間で授受されるデータに対し、データ処理を実行するためのアプリケーションプログラムを記憶する記憶手段と、
前記記憶手段に記憶されたアプリケーションプログラムのうち、特定のアプリケーションプログラムに対する実行指示を検知する検知手段と、
前記検知手段が前記実行指示を検知する毎に、前記特定のアプリケーションプログラムを実行する処理単位を生成する生成手段と、
前記生成手段が生成した前記処理単位の順に、当該処理単位を識別するための識別子をキューに登録して管理する管理手段と、
同時に実行される前記処理単位の個数が所定数以下となるよう、前記キューに先に登録された識別子の処理単位から順に実行させる制御手段と、
を備えるサーバ装置。
【請求項２】
前記管理手段は、前記処理単位の実行が完了したことを条件に、当該処理単位に対応する識別子を前記キューから削除する請求項１に記載のサーバ装置。
【請求項３】
前記生成手段は、前記処理単位を生成する毎に、当該処理単位の状態を監視する監視手段を生成し、
前記監視手段は、前記処理単位の異常終了を検知すると、前記管理手段に異常終了の発生を通知し、
前記管理手段は、前記監視手段からの通知に応じて、異常終了した前記処理単位の識別子を前記キューから削除する請求項１又は２に記載のサーバ装置。
【請求項４】
前記監視手段は、前記処理単位の正常終了を検知すると又は前記管理手段への異常終了の通知が完了すると、消滅する請求項３に記載のサーバ装置。
【請求項５】
自己の装置の状態に応じて前記所定数を変更する変更手段を更に備える請求項１〜４の何れか一項に記載のサーバ装置。
【請求項６】
販売データ処理装置と通信可能なサーバ装置のコンピュータを、
前記販売データ処理装置との間で授受されるデータに対し、データ処理を実行するためのアプリケーションプログラムを記憶する記憶手段と、
前記記憶手段に記憶されたアプリケーションプログラムのうち、特定のアプリケーションプログラムに対する実行指示を検知する検知手段と、
前記検知手段が前記実行指示を検知する毎に、前記特定のアプリケーションプログラムを実行する処理単位を生成する生成手段と、
前記生成手段が生成した前記処理単位の順に、当該処理単位を識別するための識別子をキューに登録して管理する管理手段と、
同時に実行される前記処理単位の個数が所定数以下となるよう、前記キューに先に登録された識別子の処理単位から順に実行させる制御手段と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、サーバ装置及びプログラムに関する。
【背景技術】
【０００２】
従来、複数の店舗を運営する企業では、各店舗に送信するデータや各店舗から送信されるデータ等を、サーバ装置を用いて集中管理している。係るサーバ装置では、予め記憶されたアプリケーションプログラムを実行することで、各種のデータ処理を実行し、その処理結果を各店舗に送信したりする。
【０００３】
ところで、サーバ装置が実行するアプリケーションプログラムの中には、実行時にサーバ装置にかかる負荷が高いものも存在する。このようなアプリケーションプログラム（データ処理）が多重に実行されると、サーバ装置は高負荷状態となるため、処理の実行に多くの時間を要したりする等、装置全体の処理能力が低下する可能性がある。
【０００４】
そこで、従来、日中及び夜間にバッチ処理を実行する処理装置において、日中に処理の多重度が上限に達していない場合に、前倒し可能な夜間用のバッチ処理（アプリケーションプログラム）を優先順位の高い順に実行し、処理の多重度が上限に達すると、空きが生じるまで夜間用のバッチの実行を保留する技術が提案されている。
【０００５】
しかしながら、上記した従来の技術は、日中用のバッチ処理と夜間用のバッチ処理との間での処理の多重度を制限するものであるため、同一のアプリケーションプログラムが多重に実行されるような場合には、適用することは困難である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、同一のアプリケーションプログラムを多重で実行するような場合であっても、高負荷状態に陥ることを防止することが可能なサーバ装置及びプログラムを提供することである。
【課題を解決するための手段】
【０００７】
実施形態のサーバ装置は、販売データ処理装置と通信可能なサーバ装置であって、前記販売データ処理装置との間で授受されるデータに対し、データ処理を実行するためのアプリケーションプログラムを記憶する記憶手段と、前記記憶手段に記憶されたアプリケーションプログラムのうち、特定のアプリケーションプログラムに対する実行指示を検知する検知手段と、前記検知手段が前記実行指示を検知する毎に、前記特定のアプリケーションプログラムを実行する処理単位を生成する生成手段と、前記生成手段が生成した前記処理単位の順に、当該処理単位を識別するための識別子をキューに登録して管理する管理手段と、同時に実行される前記処理単位の個数が所定数以下となるよう、前記キューに先に登録された識別子の処理単位から順に実行させる制御手段と、を備える。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係る販売データ管理システムのシステム構成の一例を示す図である。
【図２】図２は、実施形態に係るセンタサーバのハードウェア構成の一例を示す図である。
【図３】図３は、実施形態に係るセンタサーバの機能構成の一例を示す図である。
【図４】図４は、実施形態に係るセンタサーバの動作例を説明するための図である。
【発明を実施するための形態】
【０００９】
以下、実施形態に係るサーバ装置及びプログラムについて、図面を参照して説明する。なお、以下の実施形態では、複数の店舗を管理するサーバ装置（センタサーバ）に適用した例について説明するが、この実施形態によりこの発明が限定されるものではない。
【００１０】
図１は、本実施形態に係る販売データ管理システム１のシステム構成の一例を示す図である。図１に示すように、販売データ管理システム１は、ＰＯＳ（Point  Of  Sales）端末１０と、センタサーバ２０とを有する。ＰＯＳ端末１０とセンタサーバ２０は、インターネット等のネットワークＮを介して通信可能に接続される。
【００１１】
ＰＯＳ端末１０は、各店舗Ｆに設けられる販売データ処理装置である。ＰＯＳ端末１０は、客が購入した商品の登録処理と当該商品の精算処理とを実行する。具体的には、ＰＯＳ端末１０は、図示しないバーコードリーダ等を介して、商品に付されたバーコードから当該商品を識別する商品コードを読み取る。ＰＯＳ端末１０は、店舗Ｆで販売する各商品の商品コード、商品名及び売価等が登録された商品マスタ（図示せず）を参照しながら、読み取った商品コードに対応する商品を特定し、当該商品の商品名や売価等をＲＡＭ（Random  Access  Memory）等に登録する登録処理を実行する。ＰＯＳ端末１０は、小計キー等の操作により一取引分の商品の登録が完了したと判定すると、登録された商品の売価や数量に基づいて一取引分の合計金額を算出する。そして、ＰＯＳ端末１０は、客が支払った支払金額と算出した合計金額とに基づいて精算処理を実行する。なお、商品マスタは、例えばセンタサーバ２０から提供される。
【００１２】
また、ＰＯＳ端末１０は、各取引の内訳を示す売上データを、センタサーバ２０に送信する。売上データには、例えば、各商品の商品コードや、当該商品の売価、数量、取引毎の合計金額、全取引の合計金額等の他、自己の店舗Ｆを識別するための店舗コード等が含まれる。
【００１３】
なお、図１では、各店舗Ｆに１台のＰＯＳ端末１０を設けた例を示しているが、ＰＯＳ端末１０の個数は特に問わないものとする。また、各店舗Ｆに店舗サーバ（図示せず）を設け、当該店舗サーバが店舗Ｆ内に設けられたＰＯＳ端末１０の各々と通信を行うとともに、センタサーバ２０との通信を行う構成としてもよい。この場合、店舗サーバは、センタサーバ２０から送信された商品マスタを受信し、店舗内のＰＯＳ端末１０に対し参照可能に提供する。また、店舗サーバは、各ＰＯＳ端末１０で行われた登録処理及び精算処理に基づいて一店舗分の売上データを生成し、センタサーバ２０に送信する。
【００１４】
一方、センタサーバ２０は、各店舗Ｆを集中管理するサーバ装置の一例であり、各店舗Ｆを運営する企業やデータセンター等に設けられる。センタサーバ２０は、各店舗Ｆの運営に係るデータ処理を実行し、その処理結果を各店舗Ｆに送信する。なお、センタサーバ２０が実行するデータ処理の内容は特に問わないものとする。
【００１５】
例えば、センタサーバ２０は、各店舗の売上データ等に基づいて、商品マスタに登録された商品の売価を変更するデータ処理（売価変更処理）を店舗毎に実行し、当該商品マスタを該当する店舗に送信する。また、例えば、センタサーバ２０は、各店舗から送信される売上データに基づいて、ＡＢＣ分析やアソシエーション分析等のデータ処理（販売分析処理）を店舗毎に実行し、分析結果を該当する店舗に送信する。売価変更処理や販売分析処理等のデータ処理は、当該データ処理を実行するためにそれぞれ用意されたアプリケーションプログラムによって実行されるものとする。また、センタサーバ２０では、各店舗からの要求や予め定められたスケジュール等によって、同一のアプリケーションプログラムが多重（同時）に実行される状況が発生し得る環境にあるとする。
【００１６】
次に、図２を参照して、センタサーバ２０のハードウェア構成について説明する。図２は、センタサーバ２０のハードウェア構成の一例を示す図である。
【００１７】
図２に示すように、センタサーバ２０は、制御部２１と、各種プログラムおよび各種データを記憶するメモリ部２２とを備える。制御部２１は、ＣＰＵ（Central  Processing  Unit）等のプロセッサ２３、各種プログラムを記憶するＲＯＭ（Read  Only  Memory）２４及びプロセッサ２３のワークスペースとして機能するＲＡＭ２５等のコンピュータの構成を有する。
【００１８】
メモリ部２２は、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、フラッシュメモリ等の不揮発性メモリで構成される。メモリ部２２は、上記した売価変更処理や販売分析処理等のデータ処理を行うためのアプリケーションプログラムＰ１、当該アプリケーションプログラムＰ１の実行制御に係る制御用プログラムＰ２等を記憶する。また、メモリ部２２は、後述する同時実行許容数２１４（図３参照）等の各種の設定情報Ｄ１等を記憶する。なお、図１では、単一のアプリケーションプログラムＰ１を示しているが、実際にはアプリケーションプログラムＰ１は、データ処理の種別毎に用意される。
【００１９】
制御部２１は、バス２６を介してメモリ部２２に接続される。プロセッサ２３は、メモリ部２２に記憶された各種プログラムをＲＡＭ２５に展開して実行することで、センタサーバ２０の動作を統括的に制御する。
【００２０】
また、制御部２１は、バス２６を介して、キーボード等で構成された操作部２７及びＬＣＤ（Liquid  Crystal  Display）等で構成された表示部２８に接続される。制御部２１は、操作部２７に対して行われた操作入力を、操作信号として受け付ける。また、制御部２１は、表示部２８を制御することで、各種の情報を表示部２８に表示させる。
【００２１】
また、制御部２１は、バス２６を介して、通信Ｉ／Ｆ（Interface）２９に接続される。制御部２１は、通信Ｉ／Ｆ２９を介してネットワークＮに接続することで、各店舗Ｆ（ＰＯＳ端末１０）との間で通信を行う。
【００２２】
次に、図３を参照して、センタサーバ２０の機能構成について説明する。図３は、センタサーバ２０の機能構成の一例を示す図である。
【００２３】
図３に示すように、センタサーバ２０は、スレッド生成部２１１と、実行制御部２１２と、キューテーブル２１３とを機能部として備える。これらの機能部は、プロセッサ２３が、メモリ部２２に記憶された制御用プログラムＰ２を実行することでＲＡＭ２５上に実現される。例えば、これらの機能部の一部又は全ては、Ｊａｖａ（登録商標）のアスペクト技術を利用して実現することができる。
【００２４】
スレッド生成部２１１は、検知手段及び生成手段の一例である。スレッド生成部２１１は、各店舗Ｆやスケジュール等によって、特定のアプリケーションプログラムＰ１の実行が要求（実行要求）されると、その実行要求を検知する。なお、スレッド生成部２１１が検知の対象とするアプリケーションプログラムＰ１は、特に問わないものとするが、実行した際の負荷が比較的高いアプリケーションプログラムＰ１を対象とすることが好ましい。例えば、販売分析処理よりも売価変更処理の実行にかかる負荷が高い場合には、売価変更処理に係るアプリケーションプログラムＰ１を検知対象に設定することが好ましい。
【００２５】
また、スレッド生成部２１１は、特定のアプリケーションプログラムＰ１に対する実行要求を検知すると、当該アプリケーションプログラムＰ１によってデータ処理を実行するためのスレッド（データ処理スレッド２１１ａ）を生成する。また、スレッド生成部２１１は、生成したデータ処理スレッド２１１ａの生存監視を行うための生存監視スレッド２１１ｂを生成する。そして、スレッド生成部２１１は、生成したデータ処理スレッド２１１ａの登録を指示する登録情報を実行制御部２１２に出力する。
【００２６】
ここで、データ処理スレッド２１１ａは、処理単位の一例であって、スレッド生成部２１１の指示に従い、処理（データ処理）を開始する。なお、スレッド生成部２１１は、特定のアプリケーションプログラムＰ１に対する実行要求を検知する毎に、データ処理スレッド２１１ａと生存監視スレッド２１１ｂと生成する。
【００２７】
登録情報は、後述するキューテーブル２１３に登録することを指示するための情報であり、データ処理スレッド２１１ａを識別するための識別情報（以下、スレッドＩＤという）を含む。スレッドＩＤは、例えばデータ処理スレッド２１１ａのスレッドナンバー等を用いることができる。
【００２８】
スレッド生成部２１１は、実行制御部２１２からデータ処理スレッド２１１ａの実行開始を指示する開始指示情報を受け付けると、当該データ処理スレッド２１１ａを起動することでデータ処理を開始させる。そして、スレッド生成部２１１は、データ処理の完了（正常終了）に伴いデータ処理スレッド２１１ａを消滅させると、生存監視の終了を指示する監視終了情報を生存監視スレッド２１１ｂに出力するとともに、当該データ処理スレッド２１１ａの登録解除を指示する解除情報を実行制御部２１２に出力する。
【００２９】
開始指示情報には、対象となるデータ処理スレッド２１１ａのスレッドＩＤが含まれるものとする。また、解除情報は、後述するキューテーブル２１３から登録を解除することを指示するための情報であり、登録情報と同様にデータ処理スレッド２１１ａを識別するための識別情報を含む。なお、スレッド生成部２１１が生存監視スレッド２１１ｂに監視終了情報を出力するタイミングは、データ処理スレッド２１１ａの正常終了時に限らず、データ処理スレッド２１１ａの起動時であってもよい。
【００３０】
生存監視スレッド２１１ｂは、監視手段の一例である。生存監視スレッド２１１ｂは、データ処理スレッド２１１ａと対で生成され、対応するデータ処理スレッド２１１ａの生存監視を行う。具体的には、生存監視スレッド２１１ｂは、スレッド生成部２１１から監視終了情報を受け付けるまでの間、データ処理スレッド２１１ａの状態を監視する。
【００３１】
生存監視スレッド２１１ｂは、スレッド生成部２１１から監視終了情報を受け付けると、データ処理スレッド２１１ａが正常に終了したと判定（検知）し、監視を終了する。また、生存監視スレッド２１１ｂは、監視中にデータ処理スレッド２１１ａの異常終了（消滅）を検知すると、異常終了が発生したことを通知する消滅通知情報を実行制御部２１２に出力する。また、生存監視スレッド２１１ｂは、スレッド生成部２１１の正常終了を検知したこと、又は実行制御部２１２に異常終了の発生を通知したことを条件に、自己の生存監視スレッド２１１ｂを終了（消滅）させる。なお、消滅通知情報には、監視対象のデータ処理スレッド２１１ａの識別情報が含まれるものとする。
【００３２】
ここで、データ処理スレッド２１１ａの異常終了は、エラー等の発生によりデータ処理スレッド２１１ａが消滅した場合や、データ処理スレッド２１１ａが意図的に消滅された場合等に発生する。生存監視スレッド２１１ｂは、データ処理スレッド２１１ａの状態を監視し、異常終了の発生を検知すると、消滅通知情報を出力することで、当該データ処理スレッド２１１ａの登録解除を実行制御部２１２に指示する。これにより、実行される予定のなくなったデータ処理スレッド２１１ａを、キューテーブル２１３から解除（削除）することができるため、処理の効率化を図ることができる。なお、本実施形態では、データ処理スレッド２１１ａの異常終了を表す状態として、データ処理スレッド２１１ａの消滅を検知する構成としたが、他の状態を検知する構成としてもよい。
【００３３】
実行制御部２１２は、データ処理スレッド２１１ａの実行を制御するための機能部である。実行制御部２１２は、スレッド生成部２１１から登録情報を受け付けると、当該登録情報に含まれるスレッドＩＤをキューテーブル２１３に順次登録する。また、実行制御部２１２は、スレッド生成部２１１から解除情報を受け付けると、当該解除情報に含まれたスレッドＩＤをキューテーブル２１３から検索し、キューテーブル２１３から解除（削除）する。さらに、実行制御部２１２は、生存監視スレッド２１１ｂから消滅通知情報を受け付けると、当該消滅通知情報に含まれたスレッドＩＤをキューテーブル２１３から検索し、キューテーブル２１３から解除（削除）する。
【００３４】
キューテーブル２１３は、キューの一例である。キューテーブル２１３は、実行制御部２１２の制御に従い、データであるスレッドＩＤをＦＩＦＯ（First  In  First  Out）形式で格納する。また、キューテーブル２１３は、実行制御部２１２の制御に従い、キューテーブル２１３からスレッドＩＤを解除（削除）する。
【００３５】
また、実行制御部２１２は、キューテーブル２１３に先に登録されたスレッドＩＤから順に、実行開始情報をスレッド生成部２１１に出力する。具体的には、実行制御部２１２は、設定情報Ｄ１の同時実行許容数２１４に設定された個数の範囲内でスレッドＩＤの実行開始を指示する。ここで、同時実行許容数２１４には、同時に実行することが可能な処理（データ処理スレッド２１１ａ）の個数が予め設定されているものとする。
【００３６】
例えば、キューテーブル２１３に４個のスレッドＩＤが登録され、同時実行許容数２１４に２個が設定されている場合、実行制御部２１２は、先に登録された２個のスレッドＩＤについて実行開始を指示する。また、実行制御部２１２は、開始を指示した２個のスレッドＩＤのうち、何れか１個のスレッドＩＤをキューテーブル２１３から解除すると、次に登録された１個のスレッドＩＤについて実行開始を指示する。このように、実行制御部２１２は、同時に実行されるデータ処理スレッド２１１ａの個数が同時実行許容数２１４に設定された個数以下となるよう、キューテーブル２１３に先に登録されたスレッドＩＤから順に実行させる。
【００３７】
なお、同時実行許容数２１４に設定する個数は特に問わないものとするが、センタサーバ２０のスペックや、データ処理スレッド２１１ａの処理に要する負荷等に基づき、センタサーバ２０が高負荷状態に陥らない程度の個数とすることが好ましい。
【００３８】
また、同時実行許容数２１４に設定する個数は固定値に限らず、動的に設定する構成としてもよい。例えば、制御部２１は、変更手段として機能することで、センタサーバ２０の現在の負荷状態やスペック等に応じて、同時実行許容数２１４の値を動的に設定（変更）してもよい。これにより、センタサーバ２０が他の処理を実行しているような場合や、センタサーバ２０の構成を変更したような場合に、センタサーバ２０の現在の状態を同時実行許容数２１４に反映することができるため、センタサーバ２０が高負荷状態に陥ることを回避することができる。
【００３９】
次に、センタサーバ２０の動作について説明する。図４は、センタサーバ２０の動作例を説明するための図である。
【００４０】
まず、スレッド生成部２１１は、特定のアプリケーションプログラムＰ１に対する実行要求が発生するまで待機する（ステップＳ１１；Ｎｏ）。実行要求が発生すると、スレッド生成部２１１は、その実行要求を検知する（ステップＳ１１；Ｙｅｓ）。スレッド生成部２１１は、データ処理スレッド２１１ａを生成するとともに（ステップＳ１２）、生存監視スレッド２１１ｂを生成する（ステップＳ１３）。次いで、スレッド生成部２１１は、ステップＳ１２で生成したデータ処理スレッド２１１ａの登録を実行制御部２１２に指示する（ステップＳ１４）。
【００４１】
続いて、スレッド生成部２１１は、実行制御部２１２から実行開始が指示されるまで待機する（ステップＳ１５；Ｎｏ）。実行開始が指示されると（ステップＳ１５；Ｙｅｓ）、スレッド生成部２１１は、指示されたデータ処理スレッド２１１ａを起動することでデータ処理を開始させる（ステップＳ１６）。スレッド生成部２１１は、データ処理が完了すると、対応する生存監視スレッド２１１ｂに監視終了を指示するとともに（ステップＳ１７）、対応するデータ処理スレッド２１１ａを消滅させる（ステップＳ１８）。そして、スレッド生成部２１１は、データ処理が完了したデータ処理スレッド２１１ａの登録解除を実行制御部２１２に指示し（ステップＳ１９）、ステップＳ１１に戻る。
【００４２】
生存監視スレッド２１１ｂは、上述したステップＳ１３の処理に伴い、データ処理スレッド２１１ａ毎に生成される。生存監視スレッド２１１ｂは、対で生成されたデータ処理スレッド２１１ａの状態を監視し、当該データ処理スレッド２１１ａが消滅したか否かを判定する（ステップＳ２１）。生存監視スレッド２１１ｂは、データ処理スレッド２１１ａの消滅を検知すると（ステップＳ２１；Ｙｅｓ）、当該データ処理スレッド２１１ａの消滅を実行制御部２１２に通知した後（ステップＳ２２）、ステップＳ２４に移行する。
【００４３】
また、データ処理スレッド２１１ａが生存（存在）する場合（ステップＳ２１；Ｎｏ）、生存監視スレッド２１１ｂは、スレッド生成部２１１から監視終了が指示されたか否かを判定する（ステップＳ２３）。監視終了が指示されない場合には（ステップＳ２３；Ｎｏ）、生存監視スレッド２１１ｂは、ステップＳ２１に処理を戻す。監視終了が指示されると（ステップＳ２３；Ｙｅｓ）、生存監視スレッド２１１ｂは、ステップＳ２４に移行する。
【００４４】
続いて、生存監視スレッド２１１ｂは、自らのスレッドを消滅させ（ステップＳ２４）、本処理を終了する。
【００４５】
一方、実行制御部２１２では、スレッド生成部２１１からデータ処理スレッド２１１ａの登録が指示されるのを待機する（ステップＳ３１；Ｎｏ→ステップＳ３３；Ｎｏ→ステップＳ３５；Ｎｏ）。データ処理スレッド２１１ａの登録指示を受け付けると（ステップＳ３１；Ｙｅｓ）、実行制御部２１２は、そのデータ処理スレッド２１１ａのスレッドＩＤをキューテーブル２１３に登録する（ステップＳ３２）。
【００４６】
続いて、実行制御部２１２は、現在実行中のデータ処理（スレッドＩＤ）の個数が同時実行許容数２１４に設定された個数未満か否かを判定する（ステップＳ３３）。実行制御部２１２は、同時実行許容数２１４に設定された個数以上と判定すると（ステップＳ３３；Ｎｏ）、ステップＳ３５に移行する。また、実行制御部２１２は、同時実行許容数２１４に設定された個数未満と判定すると（ステップＳ３３；Ｙｅｓ）、先に登録されたスレッドＩＤから順に、余剰数分のスレッドＩＤの実行開始をスレッド生成部２１１に指示し（ステップＳ３４）、ステップＳ３５に移行する。なお、余剰数は、同時実行許容数２１４に設定された個数から現在実行中のデータ処理（スレッドＩＤ）の個数を減算した値である。
【００４７】
ステップＳ３５において、実行制御部２１２は、スレッド生成部２１１からデータ処理スレッド２１１ａの登録解除又は生存監視スレッド２１１ｂからデータ処理スレッド２１１ａの消滅が通知されたか否かを判定する（ステップＳ３５）。実行制御部２１２は、登録解除又は消滅の通知を受け付けると（ステップＳ３５；Ｙｅｓ）、その通知で指示されたスレッドＩＤをキューテーブル２１３から解除（削除）し（ステップＳ３６）、ステップＳ３１に戻る。また、実行制御部２１２は、登録解除及び消滅の何れもが通知されない場合（ステップＳ３５；Ｎｏ）、ステップＳ３１に戻る。
【００４８】
以上のように、センタサーバ２０によれば、特定のアプリケーションプログラムＰ１について、当該アプリケーションプログラムＰ１が同時に実行される処理の個数を制限することができる。これにより、センタサーバ２０では、同一のアプリケーションプログラムを多重で実行するような場合であっても、高負荷状態に陥ることを防止することができるため、装置全体の処理能力が低下してしまうことを抑止することができる。
【００４９】
また、センタサーバ２０によれば、アプリケーションプログラムＰ１を変更することなく、その実行数を制限することができるため、実行数の制御を容易且つ効率的に行うことができる。
【００５０】
以上、本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、組み合わせ、変更を行うことができる。これらの実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００５１】
例えば、上記実施形態では、特定のアプリケーションプログラムＰ１について、実行数を制限する構成を説明したが、制限対象となるアプリケーションプログラムＰ１は一つに限らず、複数であってもよい。この場合、アプリケーションプログラムＰ１間でキューテーブル２１３や同時実行許容数２１４を共用してもよいし、アプリケーションプログラムＰ１毎にキューテーブル２１３や同時実行許容数２１４をそれぞれ用意してもよい。後者の場合、各アプリケーションプログラムＰ１の負荷に応じて、実行数をそれぞれ制限することができる。
【００５２】
また、上記実施形態では、同一のアプリケーションプログラムＰ１について、その実行数を制限する構成としたが、他のアプリケーションプログラムＰ１の実行数を加味して制御する構成としてもよい。例えば、実行制御部２１２は、売価変更処理用のアプリケーションプログラムＰ１の実行数と、販売分析処理用のアプリケーションプログラムＰ１の実行数との総数が、５個以下となるよう制御してもよい。なお、この場合、アプリケーションプログラムＰ１の組み合わせ毎に、センタサーバ２０が高負荷状態に陥らない程度の実行数（総数）が同時実行許容数２１４に設定されるものとする。
【００５３】
また、上記実施形態のセンタサーバ２０で実行されるプログラムは、当該センタサーバ２０が備える記憶媒体（ＲＯＭ又はメモリ部２２）に予め組み込んで提供するものとするが、これに限らず、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。更に、記憶媒体は、コンピュータ或いは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００５４】
また、上記実施形態の情報処理装置で実行されるプログラムをインターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよく、インターネット等のネットワーク経由で提供または配布するように構成してもよい。
【符号の説明】
【００５５】
１  販売データ管理システム
１０  ＰＯＳ端末
２０  センタサーバ
２１  制御部
２２  メモリ部
２３  プロセッサ
２４  ＲＯＭ
２５  ＲＡＭ
２６  バス
２７  操作部
２８  表示部
２９  通信Ｉ／Ｆ
２１１  スレッド生成部
２１１ａ  データ処理スレッド
２１１ｂ  生存監視スレッド
２１２  実行制御部
２１３  キューテーブル
２１４  同時実行許容数
Ｐ１  アプリケーションプログラム
Ｐ２  制御用プログラム
Ｄ１  設定情報
【先行技術文献】
【特許文献】
【００５６】
【特許文献１】特開２０１５−１７０１８９号公報
【図１】
2018147408.tif 000003
【図２】
2018147408.tif 000004
【図３】
2018147408.tif 000005
【図４】
2018147408.tif 000006