(57)【要約】【課題】クライアントコントローラ２Ｃ〜６Ｃに接続された特定コントローラ１Ｃによりマルチスレッドに対応したＯＳ（オペレーティングシステム）上でメインスレッド１Ｃ４およびサブスレッド１Ｃ５ｂ，１Ｃ５ｃを作動させる場合に、各スレッドの処理間で正確且つ容易に同期をとれるようにすること。【解決手段】メインスレッドおよびサブスレッド宛のメッセージの受信時に受信メッセージを受信した順に共通のメッセージキューに登録するメッセージ登録用サブスレッド１Ｃ５ａと、前記複数の特定機能実現用サブスレッド１Ｃ５ｂ，１Ｃ５ｃと、特定機能実現用サブスレッドの起動および終了のタイミングを制御するとともにメッセージキューに登録されたメッセージの中で一番古いメッセージがメインスレッド宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行するメインスレッドとを有するマルチスレッド処理装置。【選択図】図３
2005196586.tif 000002
【特許請求の範囲】
【請求項１】
次の構成要件（Ａ01）〜（Ａ04）を備えたマルチスレッド処理装置、
（Ａ01）他のコントローラであるクライアントコントローラに接続され且つメインスレッドおよびサブスレッドをマルチスレッドに対応したＯＳ（オペレーティングシステム）上で作動させる特定コントローラ、
（Ａ02）前記メインスレッドおよびサブスレッド宛のメッセージを受信した時に前記受信メッセージを受信した順に共通のメッセージキューに登録する機能を有するプログラムであるメッセージ登録用サブスレッドと、前記メッセージ登録機能以外の他の特定の機能を実現するプログラムである特定機能実現用サブスレッドとを有する前記サブスレッド、
（Ａ03）前記メッセージキューに登録されたメッセージの中で一番古いメッセージが所定の特定機能実現用サブスレッド宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したメッセージを前記メッセージキューから消去し、前記消去したメッセージの処理を終了したときにメインスレッド宛の処理終了メッセージを送信する前記特定機能実現用サブスレッド、
（Ａ04）前記特定機能実現用サブスレッドの起動および終了のタイミングを制御する機能を有するプログラムである前記メインスレッドであって、前記メッセージキューに登録されたメッセージの中で一番古いメッセージがメインスレッド宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したメッセージを前記メッセージキューから消去するとともに、前記メッセージの実行に応じてサブスレッドを起動させたときには起動したサブスレッドが起動中であることをサブスレッド起動状況記憶手段に登録し、前記メッセージが起動中のサブスレッドからの終了メッセージである場合には前記サブスレッド起動状況記憶手段から起動中であることを消去する前記メインスレッド。
【請求項２】
次の構成要件（Ａ05），（Ａ06）を備えた請求項１記載のマルチスレッド処理装置、
（Ａ05）複数の所定の各サブスレッドの処理の優先順位を記憶するサブスレッド優先順位記憶手段、
（Ａ06）処理の優先順位が記憶されたサブスレッドの起動時に、優先順位の高い他のサブスレッドが起動中か否かを判断する優先サブスレッド起動状況判別手段と、優先順位の高い他のサブスレッドが起動中の場合には処理開始を遅延させる処理開始遅延手段とを有する前記特定機能実現用サブスレッド。
【請求項３】
次の構成要件（Ａ07）を備えた請求項２記載のマルチスレッド処理装置、
（Ａ07）メインスレッド宛のサブスレッドの終了メッセージを処理する際、終了するサブスレッドよりも優先順位の低いサブスレッドが起動中か否かを判断する低順位サブスレッド起動状況判別手段と、低順位サブスレッドが起動中の場合には前記低順位サブスレッドの処理を開始させる低順位サブスレッド処理開始手段とを有する前記メインスレッド。
【請求項４】
次の構成要件（Ａ08）を備えた請求項３記載のマルチスレッド処理装置、
（Ａ08）メインスレッド宛のサブスレッドの終了メッセージを処理する際、低順位サブスレッドが起動中の場合には前記低順位サブスレッドの処理を開始させるメッセージを前記低順位サブスレッド宛に送信する前記低順位サブスレッド処理開始手段を有する前記メインスレッド。
【請求項５】
次の構成要件（Ａ09）を備えた請求項２記載のマルチスレッド処理装置、
（Ａ09）処理の優先順位が記憶されたサブスレッドの処理終了時に、優先順位の低い他のサブスレッドが起動中か否かを判断する低順位サブスレッド起動状況判別手段と、優先順位の低い他のサブスレッドが起動中の場合には前記低順位サブスレッドの処理を開始させるメッセージを前記低順位サブスレッド宛に送信する低順位サブスレッド処理開始メッセージ送信手段とを有する前記優先順位の高いサブスレッド。
【請求項６】
前記請求項１ないし５のマルチスレッド処理装置と、次の構成要件（Ａ010）を備えた画像形成装置、
（Ａ010）前記クライアントコントローラと前記特定コントローラとを含む複数のコントローラであって、それぞれ異なる画像形成部材の動作を制御する前記複数のコントローラを備えた画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他のコントローラであるクライアントコントローラに接続され且つメインスレッド（処理の時間が短く、他の複数のサブスレッドの作動タイミングの処理を行うスレッド）および複数のサブスレッドをマルチスレッドに対応したＯＳ（オペレーティングシステム）上で作動させる特定コントローラを有するマルチスレッド処理装置および前記マルチスレッド処理装置を備えた画像形成装置に関し、特に、前記複数の特定機能実現用サブスレッドの作動タイミングの順序を容易に制御することが可能なマルチスレッド処理装置および前記マルチスレッド処理装置を備えた画像形成装置に関する。
なお本願明細書中において、前記「コントローラ」は、外部または他のコントローラとの信号の入出力および入出力信号レベルの調節等を行うＩ／Ｏ（入出力インターフェース）、必要な処理を行うためのプログラムおよびデータ等が記憶されたＲＯＭ（リードオンリーメモリ）、必要なデータを一時的に記憶するためのＲＡＭ（ランダムアクセスメモリ）、前記ＲＯＭに記憶されたプログラムに応じた処理を行うＣＰＵ（中央演算処理装置）、ならびにクロック発振器等を有するコンピュータにより構成されており、前記ＲＯＭに記憶されたプログラムを実行することにより種々の機能を実現することができる装置を意味している。
また本願明細書中において、「スレッド」は、１つのプログラムの中の一部分であって特定の機能を実現するためのプログラム部分を意味する。
【背景技術】
【０００２】
前記メインスレッドおよび複数のサブスレッドを備えた従来のマルチスレッド処理装置では、メインスレッドおよびサブスレッドはそれぞれメッセージキューを備えているので、２つのサブスレッドが同時に起動された場合等にどのサブスレッドを優先して実行するかを定める手順が複雑であった。
例えば、特許文献１（特開平３−１０５４２８号公報）には、次のタスク間通信方式が記載されている。
「オペレーティングシステムの配下で実行される複数のタスク（スレッド）の１つが、他のタスクが有するサービス機能を使用する際のタスク間通信方式において、初期化時に、前記他のタスクは、
前記１つのタスクに対して、前記オペレーティングシステムが提供するタスク間通信機能により、前記サービス機能の呼び出しに必要な情報を与え、
前記１つのタスクの実行時には、該１つのタスクは、前記オペレーティングシステムが提供するタスク間通信機能によらず、前記サービス機能の呼び出しに必要な情報を用いて、前記サービス機能を関数直接呼び出し（サブルーチンコール）により呼び出して前記サービス機能を使用することを特徴とするタスク間通信方式。」
【０００３】
【特許文献１】特開平３−１０５４２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前記特許文献１の技術では、マルチタスクにおけるタスク間通信でどのようにして同期をとる（各処理の実行順序を正確且つ容易に定める）のか記載されていない。
【０００５】
また、従来、他のコントローラであるクライアントコントローラに接続された特定コントローラにおいて、前記クライアントコントローラに対するメッセージが登録されるメッセージキューに登録されたメッセージに応じた処理を行うプログラムであるメインスレッドと、前記メッセージに応じてメインスレッドにより起動され，比較的時間のかかる特定の機能を実現する複数のプログラムである複数の特定機能実現用の複数のサブスレッドとをマルチスレッドで処理する方法が知られている。
前記従来のマルチスレッドで処理する方法では、メインスレッドおよび複数の各サブスレッドの各々に対してメッセージキューが設けられている。このような方法では、各スレッドのメッセージキューに登録されたメッセージは、各スレッドにより順次処理されるので各スレッド間で容易に同期をとる（各処理の実行順序を正確且つ容易に定める）ことができなかった。
【０００６】
本発明は、前述の事情に鑑み、次の記載内容（Ｏ01）を課題とする。
（Ｏ01）他のコントローラであるクライアントコントローラに接続された特定コントローラによりマルチスレッドに対応したＯＳ（オペレーティングシステム）上でメインスレッドおよびサブスレッドを作動させる場合に、各スレッドの処理間で容易に同期をとれる（各処理の実行順序を正確且つ容易に定められる）ようにすること。
【課題を解決するための手段】
【０００７】
次に、前記課題を解決した本発明を説明するが、本発明の要素には、後述の実施例の構成要素との対応を容易にするため、実施例の構成要素の符号をカッコで囲んだものを付記する。また、本発明を後述の実施例の符号と対応させて説明する理由は、本発明の理解を容易にするためであり、本発明の範囲を実施例に限定するためではない。
【０００８】
（第１発明）
前記課題を解決するために、第１発明のマルチスレッド処理装置は、次の構成要件（Ａ01）〜（Ａ04）を備えたことを特徴とする。
（Ａ01）他のコントローラであるクライアントコントローラ（２Ｃ，３Ｃ，４Ｃ，６Ｃ）に接続され且つメインスレッド（１Ｃ４）およびサブスレッド（１Ｃ５）をマルチスレッドに対応したＯＳ（オペレーティングシステム）上で作動させる特定コントローラ（メインコントローラ）（１Ｃ）、
（Ａ02）前記メインスレッド（１Ｃ４）およびサブスレッド（１Ｃ５）宛のメッセージを受信した時に前記受信メッセージを受信した順に共通のメッセージキュー（１Ｃ１）に登録する機能を有するプログラムであるメッセージ登録用サブスレッド（１Ｃ５ａ）と、前記メッセージ登録機能以外の他の特定の機能を実現するプログラムである特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）とを有する前記サブスレッド（１Ｃ５）、
（Ａ03）前記メッセージキュー（１Ｃ１）に登録されたメッセージの中で一番古いメッセージが所定の特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したメッセージを前記メッセージキュー（１Ｃ１）から消去し、前記消去したメッセージの処理を終了したときにメインスレッド（１Ｃ４）宛の処理終了メッセージを送信する前記特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）、
（Ａ04）前記特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）の起動および終了のタイミングを制御する機能を有するプログラムである前記メインスレッド（１Ｃ４）であって、前記メッセージキュー（１Ｃ１）に登録されたメッセージの中で一番古いメッセージがメインスレッド（１Ｃ４）宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したメッセージを前記メッセージキュー（１Ｃ１）から消去するとともに、前記メッセージの実行に応じてサブスレッド（１Ｃ５）を起動させたときには起動したサブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）が起動中であることをサブスレッド起動状況記憶手段（１Ｃ３）に登録し、前記メッセージが起動中のサブスレッドからの終了メッセージである場合には前記サブスレッド起動状況記憶手段（１Ｃ３）から起動中であることを消去する前記メインスレッド（１Ｃ４）。
【０００９】
（第１発明の作用）
前記構成要件（Ａ01）〜（Ａ04）を備えたマルチスレッド処理装置では、他のコントローラであるクライアントコントローラ（２Ｃ，３Ｃ，４Ｃ，６Ｃ）に接続された特定コントローラは、マルチスレッドに対応したＯＳ（オペレーティングシステム）上で、所定の機能を実現するためのプログラムであるメインスレッド（１Ｃ４）およびサブスレッドを作動させる。
前記サブスレッドは、前記所定の機能を実現するプログラムであるメッセージ登録用サブスレッド（１Ｃ５ａ）と、特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）とを有している。前記メッセージ登録用サブスレッド（１Ｃ５ａ）は、前記メインスレッド（１Ｃ４）およびサブスレッド宛のメッセージを受信した時に前記受信メッセージを受信した順に共通のメッセージキュー（１Ｃ１）に登録する。
前記特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）は、前記メッセージ登録機能以外の他の特定の機能を実現する。前記特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）は、前記メッセージキュー（１Ｃ１）に登録されたメッセージの中で一番古いメッセージが所定の特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したメッセージを前記メッセージキュー（１Ｃ１）から消去し、前記消去したメッセージの処理を終了したときにメインスレッド（１Ｃ４）宛の処理終了メッセージを送信する。
前記メインスレッド（１Ｃ４）は、前記特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）の起動および終了のタイミングを制御するプログラムである。前記メインスレッド（１Ｃ４）は、前記メッセージキュー（１Ｃ１）に登録されたメッセージの中で一番古いメッセージがメインスレッド（１Ｃ４）宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したメッセージを前記メッセージキュー（１Ｃ１）から消去するとともに、前記メッセージの実行に応じてサブスレッドを起動させたときには起動したサブスレッドが起動中であることをサブスレッド起動状況記憶手段（１Ｃ３）に登録し、前記メッセージが起動中のサブスレッドからの終了メッセージである場合には前記サブスレッド起動状況記憶手段（１Ｃ３）から起動中であることを消去する。
【００１０】
したがって、前記他のコントローラであるクライアントコントローラ（２Ｃ，３Ｃ，４Ｃ，６Ｃ）に接続された特定コントローラでは、メインスレッド（１Ｃ４）宛またはサブスレッド宛のメッセージを受信した時には受信した順に受信メッセージがメッセージキュー（１Ｃ１）に登録され、前記登録されたメッセージに対応した処理は、必ずメッセージキュー（１Ｃ１）に登録された順に実行される。
【００１１】
（第１発明の形態１）
前記第１発明の形態１のマルチスレッド処理装置は、前記第１発明において次の構成要件（Ａ05），（Ａ06）を備えたことを特徴とする。
（Ａ05）複数の所定の各サブスレッド（１Ｃ５ｃ１，１Ｃ５ｃ２，…）の処理の優先順位を記憶するサブスレッド優先順位記憶手段（１Ｃ２）、
（Ａ06）処理の優先順位が記憶されたサブスレッド（１Ｃ５ｃ２，）の起動時に、優先順位の高い他のサブスレッド（１Ｃ５ｃ１）が起動中か否かを判断する優先サブスレッド起動状況判別手段（１Ｃ５ｃａ）と、優先順位の高い他のサブスレッド（１Ｃ５ｃ１）が起動中の場合には処理開始を遅延させる処理開始遅延手段（１Ｃ５ｃｂ）とを有する前記特定機能実現用サブスレッド（１Ｃ５ｃ２）。
【００１２】
（第１発明の形態１の作用）
前記構成要件（Ａ05），（Ａ06）を備えた第１発明の形態１のマルチスレッド処理装置では、サブスレッド優先順位記憶手段（１Ｃ２）は、複数の所定の各サブスレッド（１Ｃ５ｃ１，１Ｃ５ｃ２，…）の処理の優先順位を記憶する。
前記特定機能実現用サブスレッド（１Ｃ５ｃ２）の優先サブスレッド起動状況判別手段（１Ｃ５ｃａ）は、処理の優先順位が記憶されたサブスレッド（１Ｃ５ｃ２）の起動時に、優先順位の高い他のサブスレッド（１Ｃ５ｃ１）が起動中か否かを判断する。処理開始遅延手段（１Ｃ５ｃｂ）は、優先順位の高い他のサブスレッド（１Ｃ５ｃ１）が起動中の場合には処理開始を遅延させる。
【００１３】
（第１発明の形態２）
前記第１発明の形態２のマルチスレッド処理装置は、前記第１発明の形態１において次の構成要件（Ａ07）を備えたことを特徴とする。
（Ａ07）メインスレッド（１Ｃ４）宛のサブスレッドの終了メッセージを処理する際、終了するサブスレッド（１Ｃ５ｃ１）よりも優先順位の低いサブスレッド（１Ｃ５ｃ２）が起動中か否かを判断する低順位サブスレッド起動状況判別手段（１Ｃ４ｄ）と、低順位サブスレッド（１Ｃ５ｃ２）が起動中の場合には前記低順位サブスレッド（１Ｃ５ｃ２）の処理を開始させる低順位サブスレッド処理開始手段（１Ｃ４ｅ）とを有する前記メインスレッド（１Ｃ４）。
【００１４】
（第１発明の形態２の作用）
前記構成要件（Ａ07）を備えた前記第１発明の形態２のマルチスレッド処理装置では、前記メインスレッド（１Ｃ４）の低順位サブスレッド起動状況判別手段（１Ｃ４ｄ）は、メインスレッド（１Ｃ４）宛のサブスレッドの終了メッセージを処理する際、終了するサブスレッド（１Ｃ５ｃ１）よりも優先順位の低いサブスレッド（１Ｃ５ｃ２）が起動中か否かを判断する。低順位サブスレッド処理開始手段（１Ｃ４ｅ）は、低順位サブスレッド（１Ｃ５ｃ２）が起動中の場合には前記低順位サブスレッド（１Ｃ５ｃ２）の処理を開始させる。
【００１５】
（第１発明の形態３）
前記第１発明の形態３のマルチスレッド処理装置は、前記第１発明の形態２において次の構成要件（Ａ08）を備えたことを特徴とする。
（Ａ08）メインスレッド（１Ｃ４）宛のサブスレッド（１Ｃ５ｃ１）の終了メッセージを処理する際、低順位サブスレッド（１Ｃ５ｃ２）が起動中の場合には前記低順位サブスレッド（１Ｃ５ｃ２）の処理を開始させるメッセージを前記低順位サブスレッド（１Ｃ５ｃ２）宛に送信する前記低順位サブスレッド処理開始手段（１Ｃ４ｅ）を有するメインスレッド（１Ｃ４）。
【００１６】
（第１発明の形態３の作用）
前記構成要件（Ａ08）を備えた前記第１発明の形態３のマルチスレッド処理装置では、前記低順位サブスレッド処理開始手段（１Ｃ４ｅ）を有するメインスレッド（１Ｃ４）は、メインスレッド（１Ｃ４）宛のサブスレッド（１Ｃ５ｃ１）の終了メッセージを処理する際、低順位サブスレッド（１Ｃ５ｃ２）が起動中の場合には前記低順位サブスレッド（１Ｃ５ｃ２）の処理を開始させるメッセージを前記低順位サブスレッド（１Ｃ５ｃ２）宛に送信する。
【００１７】
（第１発明の形態４）
前記第１発明の形態４のマルチスレッド処理装置は、前記第１発明の形態１において次の構成要件（Ａ09）を備えたことを特徴とする。
（Ａ09）処理の優先順位が記憶されたサブスレッド（１Ｃ５ｃ１，１Ｃ５ｃ２，…）の処理終了時に、優先順位の低い他のサブスレッド（１Ｃ５ｃ２）が起動中か否かを判断する低順位サブスレッド起動状況判別手段（１Ｃ４ｄ）と、優先順位の低い他のサブスレッド（１Ｃ５ｃ２）が起動中の場合には前記低順位サブスレッド（１Ｃ５ｃ２）の処理を開始させるメッセージを前記低順位サブスレッド（１Ｃ５ｃ２）宛に送信する低順位サブスレッド処理開始メッセージ送信手段（１Ｃ５ｃｅ）とを有する前記優先順位の高いサブスレッド（１Ｃ５ｃ１）。
【００１８】
（第１発明の形態４の作用）
前記構成要件（Ａ09）を備えた前記第１発明の形態４のマルチスレッド処理装置では、優先順位の高いサブスレッド（１Ｃ５ｃ１）の低順位サブスレッド起動状況判別手段（１Ｃ５ｃｃ）は、処理の優先順位を記憶されたサブスレッドの（１Ｃ５ｃ１，１Ｃ５ｃ２，…）処理終了時に、優先順位の低い他のサブスレッド（１Ｃ５ｃ２）が起動中か否かを判断する。低順位サブスレッド処理開始メッセージ送信手段（１Ｃ５ｃｅ）は、優先順位の低い他のサブスレッド（１Ｃ５ｃ２）が起動中の場合には前記低順位サブスレッド（１Ｃ５ｃ２）の処理を開始させるメッセージを前記低順位サブスレッド（１Ｃ５ｃ２）宛に送信する。
【００１９】
（第２発明）
前記課題を解決するために、第２発明の画像形成装置は、前記第１発明または前記第１発明の形態１ないし４のいずれか記載のマルチスレッド処理装置と、次の構成要件（Ａ010）とを備えたことを特徴とする。
（Ａ010）前記クライアントコントローラ（２Ｃ，３Ｃ，４Ｃ，５Ｃ）と前記特定コントローラ（１Ｃ）とを含む複数のコントローラ（１Ｃ〜５Ｃ）であって、それぞれ異なる画像形成部材の動作を制御する前記複数のコントローラ（１Ｃ〜５Ｃ）を備えた画像形成装置。
【００２０】
（第２発明の作用）
前記第１発明または前記第１発明の形態１ないし４のいずれか記載のマルチスレッド処理装置と、前記構成要件（Ａ010）とを備えた第２発明の画像形成装置では、前記クライアントコントローラ（２Ｃ，３Ｃ，４Ｃ，５Ｃ）と前記特定コントローラ（１Ｃ）とを含む複数のコントローラは、それぞれ異なる画像形成部材の動作を制御する。この画像形成装置は、前記第１発明または前記第１発明の形態１ないし４のいずれか記載のマルチスレッド処理装置により、各スレッド（１Ｃ４，１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）の処理間で容易に同期をとることができる。すなわち、同時に作動する各スレッド（１Ｃ４，１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）の処理を所定の順序で実行することができる。
【発明の効果】
【００２１】
前述の本発明は、下記の効果（Ｅ01）を奏する。
（Ｅ01）他のコントローラであるクライアントコントローラに接続された特定コントローラによりマルチスレッドに対応したＯＳ（オペレーティングシステム）上でメインスレッドおよびサブスレッドを作動させる場合に、各スレッドの処理間で容易に同期をとることができる。
【発明を実施するための最良の形態】
【００２２】
次に図面を参照しながら、本発明の実施の形態の具体例（実施例）の画像形成装置を説明するが、本発明は以下の実施の形態に限定されるものではない。
なお、以後の説明の理解を容易にするために、図面において、前後方向をＸ軸方向、右左方向をＹ軸方向、上下方向をＺ軸方向とし、Ｘ，−Ｘ，Ｙ，−Ｙ，Ｚ，−Ｚで示す方向または示す側をそれぞれ、前方、後方、右方、左方、上方、下方、または、前側、後側、右側、左側、上側、下側とする。
また、図中、「○」の中に「・」が記載されたものは紙面の裏から表に向かう矢印を意味し、「○」の中に「×」が記載されたものは紙面の表から裏に向かう矢印を意味するものとする。
【実施例１】
【００２３】
図１は本発明のマルチスレッド処理装置を有する画像形成装置と前記画像形成装置に接続されている課金管理サーバおよびパソコン等の説明図である。
図１において、画像形成装置Ｕは、パソコンＰＣ１〜ＰＣ３およびデータベースサーバＤＢＳにランＬ（ローカルエリアネットワーク）で接続されている。前記ランＬはルータＲおよびモデムＭを介して公衆回線Ｋに接続されている。
前記画像形成装置Ｕは、ＦＡＸ機能、複写機能およびプリンタ機能等を備えており、リース契約で使用されている。前記リース契約で使用されている画像形成装置Ｕは、公衆回線Ｋを介して課金管理サーバＫＫＳに接続されており、前記課金管理サーバＫＫＳからの課金データ送信要求を受信したときには、画像形成装置Ｕの一定期間内の使用により発生したプリント枚数等の課金データを課金データ管理サーバＫＫＳに送信している。
前記パソコンＰＣ１〜ＰＣ３、データベースサーバＤＢＳおよび課金管理サーバＫＳは、それぞれ、コンピュータ本体Ｈ１ａ〜Ｈ５ａ、ディスプレイＨ１ｂ〜Ｈ５ｂ、キーボードＨ１ｃ〜Ｈ５ｃ、マウスＨ１ｄ〜Ｈ５ｄを有している。
【００２４】
（画像形成装置Ｕ）
図２は前記図１に示す画像形成装置の縦断面概略図である。
図２において、前記画像形成装置Ｕは、自動原稿搬送装置ＡＤＦと、これを支持し且つ上端にプラテンガラスＰＧを有するＩＩＴ（イメージインプットターミナル、すなわち、イメージスキャナ）と、ＩＯＴ（イメージアウトプットターミナル、すなわち、プリンタ）とを備えている。
前記自動原稿搬送装置Ｕ1は、複写しようとする複数の原稿Ｇiが重ねて載置される原稿給紙トレイＴＧ1と、原稿給紙トレイＴＧ1から前記プラテンガラスＰＧ上の複写位置（プラテンロールＰｒによりＰＧに押圧される原稿読取位置）を通過して搬送される原稿Ｇiが排出される原稿排紙トレイＴＧ2とを有している。
前記画像形成装置本体Ｕ2は、ユーザがコピースタート等の作動指令信号を入力操作するＵＩ（ユーザインタフェース）と、露光光学系Ａ（図示せず）等を有している。
【００２５】
前記自動原稿搬送装置Ｕ2でプラテンガラスＰＧ上を搬送される原稿または手動でプラテンガラスＰＧ上に置かれた原稿（図示せず）からの反射光は、前記露光光学系Ａを介して、ＣＣＤ（固体撮像素子）でＲ（赤）、Ｇ（緑）、Ｂ（青）の電気信号に変換される。
ＩＰＳ（イメージプロセッシングシステム）は、ＣＣＤから入力される前記ＲＧＢの電気信号をＫ（黒）、Ｙ（イエロー）、Ｍ（マゼンタ）、Ｃ（シアン）の画像データに変換して一時的に記憶し、前記画像データを所定のタイミングで潜像形成用の画像データとしてレーザ駆動回路ＤＬに出力する。
なお、原稿画像がモノクロの場合は、Ｋ（黒）のみの画像データがレーザ駆動回路ＤＬに入力される。
前記レーザ駆動回路ＤＬは、各色Ｙ，Ｍ，Ｃ，Ｋの各レーザ駆動回路（図示せず）を有し、入力された画像データに応じたレーザ駆動信号を所定のタイミングで、潜像形成光学系（潜像形成装置）ＲＯＳの各色の潜像書込用レーザダイオード（図示せず）に出力する。
【００２６】
前記ＲＯＳの上方に配置されたトナー像形成装置Ｕｙ，Ｕｍ，Ｕｃ，Ｕｋはそれぞれ、Ｙ（イエロー）、Ｍ（マゼンタ）、Ｃ（シアン）、およびＫ（黒）の各色のトナー像を形成する装置である。
潜像形成光学系ＲＯＳの前記図示しない各レーザダイオードから出射したＹ，Ｍ，Ｃ，ＫのレーザビームＬｙ，Ｌｍ，Ｌｃ，Ｌｋは、それぞれ、回転する像担持体ＰＲｙ，ＰＲｍ，ＰＲｃ，ＰＲｋに入射する。
前記Ｙのトナー像形成装置Ｕｙは、回転する像担持体ＰＲｙ、帯電ロール（帯電部材）ＣＲｙ，現像装置Ｇｙ、転写ロールＴ１ｙ、クリーナＣＬｙを有しており、前記トナー像形成装置Ｕｍ，Ｕｃ，Ｕｋはいずれも前記Ｙのトナー像形成装置Ｕｙと同様に構成されている。
【００２７】
前記各像担持体ＰＲｙ，ＰＲｍ，ＰＲｃ，ＰＲｋはそれぞれの帯電ロールＣＲｙ，ＣＲｍ，ＣＲｃ，ＣＲｋにより一様に帯電された後、画像書込位置（潜像形成位置）Ｑ１ｙ、Ｑ１ｍ，Ｑ１ｃ，Ｑ１ｋにおいて、前記レーザビームＬｙ，Ｌｍ，Ｌｃ，Ｌｋにより、その表面に静電潜像が形成される。前記像担持体ＰＲｙ，ＰＲｍ，ＰＲｃ，ＰＲｋ表面の静電潜像は、現像領域Ｑ２ｙ，Ｑ２ｍ，Ｑ２ｃ，Ｑ２ｋにおいて現像器Ｇｙ，Ｇｍ，Ｇｃ，Ｇｋによりトナー像に現像される。
その現像されたトナー像は、中間転写ベルトＢに接触する１次転写領域Ｑ３ｙ，Ｑ３ｍ，Ｑ３ｃ，Ｑ３ｋに搬送される。前記１次転写領域Ｑ３ｙ，Ｑ３ｍ，Ｑ３ｃ，Ｑ３ｋにおいて中間転写ベルトＢの裏面側に配置された１次転写ロールＴ1ｙ，Ｔ1ｍ，Ｔ1ｃ，Ｔ1ｋには、コントローラＣにより制御される電源回路Ｅから所定のタイミングでトナーの帯電極性と逆極性の１次転写電圧が印加される。
前記各像担持体ＰＲｙ〜ＰＲｋ上のトナー像は前記１次転写ロールＴ1ｙ，Ｔ1ｍ，Ｔ1ｃ，Ｔ1ｋにより中間転写ベルトＢに１次転写される。１次転写後の像担持体ＰＲｙ，ＰＲｍ，ＰＲｃ，ＰＲｋ表面の残留トナーは、像担持体クリーナＣＬｙ，ＣＬｍ，ＣＬｃ，ＣＬｋによりクリーニングされる。
【００２８】
前記像担持体ＰＲｙ〜ＰＲｋの上方には、上下移動可能且つ前方に引き出し可能なベルトモジュールＢＭが配置されている。前記ベルトモジュールＢＭは、前記中間転写ベルトＢと、テンションロールＲｔ、ウォーキングロールＲｗ、アイドラロール（フリーロール）Ｒｆおよび駆動ロール兼用のバックアップロールＴ２aを含むベルト支持ロール（Ｒｔ，Ｒｗ，Ｒｆ，Ｔ２a）と、前記１次転写ロールＴ1ｙ，Ｔ1ｍ，Ｔ1ｃ，Ｔ1ｋとを有している。そして、前記中間転写ベルトＢは前記ベルト支持ロール（Ｒｔ，Ｒｗ，Ｒｆ，Ｔ２a）により回転移動可能に支持されている。したがって、前記駆動ロール兼用のバックアップロールＴ２aを回転駆動する駆動装置および前記ベルト支持ロール（Ｒｔ，Ｒｗ，Ｒｆ，Ｔ２a）等により中間転写ベルト駆動装置すなわち、中間転写材（中間転写ベルト）を搬送する中間転写材搬送装置（Ｒｔ，Ｒｗ，Ｒｆ，Ｔ２a）が構成されている。
【００２９】
前記バックアップロールＴ２aに接する中間転写ベルトＢの表面に対向して２次転写ロールＴ２bが配置されており、前記各ロールＴ２a，Ｔ２bにより２次転写器Ｔ２が構成されている。また、２次転写ロールＴ２bおよび中間転写ベルトＢの対向する領域には２次転写領域（シート転写位置）Ｑ４が形成される。
前記１次転写領域Ｑ３ｙ，Ｑ３ｍ，Ｑ３ｃ，Ｑ３ｋで転写器Ｔ1ｙ，Ｔ1ｍ，Ｔ1ｃ，Ｔ1ｋにより中間転写ベルトＢ上に順次重ねて転写されたカラートナー像は、前記２次転写領域Ｑ４に搬送される。
【００３０】
前記ＲＯＳの下方には、給紙トレイＴＲ1〜ＴＲ3を前後方向（Ｘ軸方向、即ち図１の画面に垂直な方向）に出入可能に支持する左右一対のガイドレールＧＲ、ＧＲが３段設けられている。給紙トレイＴＲ1〜ＴＲ3の記録シートＳは、ピックアップロールＲpにより取り出され、さばきロールＲsにより１枚ずつ分離れてから複数の搬送ロールＲａによりレジロールＲrに送られる。前記シート搬送ロールＲａはシートガイドにより形成されたシート搬送路ＳＨに沿って複数設けられており、２次転写領域Ｑ４のシート搬送方向上流側にはレジロールＲｒが配置されている。前記シート搬送路ＳＨ、シート搬送ロールＲａ、レジロールＲｒ等によりシート搬送装置（ＳＨ＋Ｒａ＋Ｒｒ）が構成されている。
【００３１】
レジロールＲrは、前記中間転写ベルトＢに形成されたカラートナー像が２次転写領域Ｑ４に搬送されるのにタイミングを合わせて、前記記録シートＳを２次転写領域Ｑ４に搬送する。記録シートＳが前記２次転写領域Ｑ４を通過する際、前記バックアップロールＴ２aはアースされ、２次転写ロールＴ２bには前記コントローラＣにより制御される電源回路Ｅから所定のタイミングでトナーの帯電極性と逆極性の２次転写電圧が印加される。このとき、前記中間転写ベルトＢ上のカラートナー像は、前記２次転写器Ｔ２により前記記録シートＳに転写される。
２次転写後の前記中間転写ベルトＢは、ベルトクリーナＣＬbによりクリーニングされる。
前記トナー像形成装置Ｕｙ〜Ｕｋの像担持体ＰＲｙ〜ＰＲｋ上に形成されたトナー像は、１次転写領域Ｑ３ｙ〜Ｑ３ｋでベルトモジュールＢＭのの１次転写ロールＴ１ｙ〜Ｔ１ｋにより中間転写ベルトＢに１次転写され、２次転写領域Ｑ４で２次転写器Ｔ２の２次転写ロールＴ２b等により記録シートＳに２次転写される。したがって、前記ベルトモジュールＢＭおよび２次転写ールＴ２b等により、転写領域Ｑ３ｙ〜Ｑ３ｋを通過する像担持体ＰＲｙ〜ＰＲｋ表面のトナー像を記録シートＳに転写する転写装置（ＢＭ＋Ｔ２b）が構成されている。
【００３２】
前記トナー像が２次転写された記録シートＳは、定着装置Ｆの加熱ロールＦhおよび加圧ロールＦpの圧接領域である定着領域Ｑ５に搬送され、前記定領域を通過する際に加熱定着された後、排出ローラＲhから排紙トレーＴＲhに出される。
なお、前記加熱ロールＦh表面には、記録シートＳの前記加熱ロールからの離型性を良くするための離型剤が離型剤塗布装置Ｆaにより塗布されている。
【００３３】
前記ベルトモジュールＢＭの上方にはＹ（イエロー），Ｍ（マゼンタ），Ｃ（シアン），Ｋ（黒）の各現像剤を収容する現像剤カセットＫｙ，Ｋｍ，Ｋｃ，Ｋｋが配置されている。各現像剤カセットＫｙ，Ｋｍ，Ｋｃ，Ｋｋに収容された現像剤は、前記現像器Ｇｙ，Ｇｍ，Ｇｃ，Ｇｋの現像剤の消費に応じて、図示しない現像剤補給路から前記各現像器Ｇｙ，Ｇｍ，Ｇｃ，Ｇｋに補給される。
【００３４】
図１において、前記画像形成装置Ｕは上側フレームＵＦと下側フレームＬＦとを有しており、上側フレームＵＦには、前記ＲＯＳおよびＲＯＳよりも上方に配置された部材（像担持体ＰＲｙ，ＰＲｍ，ＰＲｃ，ＰＲｋ、現像器Ｇｙ，Ｇｍ，Ｇｃ，Ｇｋ、ベルトモジュールＢＭ等）が支持されている。
また、下側フレームＬＦには、前記給紙トレイＴＲ1〜ＴＲ3を支持するガイドレールＧＲおよび前記各トレイＴＲ1〜ＴＲ3から給紙を行う前記給紙部材（ピックアップロールＲp，さばきロールＲs，シート搬送ロールＲa等）が支持されている。
【００３５】
（画像形成装置の制御部）
図３は前記図２の画像形成装置の制御部分の説明図である。
図３において、画像形成装置Ｕ（図２参照）の制御部は、特定コントローラとしてのメインコントローラ１Ｃ、クライアントコントローラとしてのＵＩ（ユーザインタフェース）コントローラ２ＣおよびＩＯＴ（イメージアウトプットコントローラ）コントローラ３Ｃ、ＩＩＴコントローラ４Ｃ、ＡＤＦ（オートドキュメントフィーダ、すなわち、自動原稿搬送装置）コントローラ５Ｃを有している。
前記各コントローラ１Ｃ〜５Ｃは、それぞれ、外部または他のコントローラとの信号の入出力および入出力信号レベルの調節等を行うＩ／Ｏ（入出力インターフェース）、必要な処理を行うためのプログラムおよびデータ等が記憶されたＲＯＭ（リードオンリーメモリ）、必要なデータを一時的に記憶するためのＲＡＭ（ランダムアクセスメモリ）、前記ＲＯＭに記憶されたプログラムに応じた処理を行うＣＰＵ（中央演算処理装置）、ならびにクロック発振器等を有するコンピュータにより構成されており、前記ＲＯＭに記憶されたプログラムを実行することにより種々の機能を実現することができる。
【００３６】
前記メインコントローラ１Ｃは、次の機能１Ｃ１〜１Ｃ５を有している。
１Ｃ１：メッセージキュー
メッセージキュー１Ｃ１は、メインスレッドおよびサブスレッド宛のメッセージ（ＣＰＵ間で送受信されるデータ）を受信した時に前記受信メッセージを受信した順に保存しておくバッファである。
１Ｃ２：サブスレッド優先順位記憶手段
サブスレッド優先順位記憶手段１Ｃ２は、複数の所定の各サブスレッドの処理の優先順位を記憶する。
１Ｃ３：サブスレッド起動状況記憶手段
サブスレッド起動状況記憶手段１Ｃ３は、起動したサブスレッドが起動中であることを記憶する。
【００３７】
１Ｃ４：メインスレッド
メインスレッド１Ｃ４は、マルチスレッド（１つのアプリケーションソフトがスレッドと呼ばれる処理単位を複数生成し、平行して複数の処理を行うこと。）に対応したＯＳ上での、ソフトウエアの実行単位の１つであり、特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）の起動および終了のタイミングを制御する機能を有するプログラムである。このメインスレッドは、メッセージ実行手段１Ｃ４ａ、メッセージ消去手段１Ｃ４ｂおよび起動状況登録消去手段１Ｃ４ｃ等の機能を有している。
このメインスレッドのメッセージ実行手段１Ｃ４ａは、前記メッセージキューに登録されたメッセージの中で一番古いメッセージがメインスレッド宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行する。
前記メッセージ消去手段１Ｃ４ｂは、前記メッセージ実行手段１Ｃ４ａの処理の実行と同時に前記実行したメッセージを前記メッセージキューから消去する。
前記起動状況登録消去手段１Ｃ４ｃは、前記メッセージの実行に応じてサブスレッドを起動させたときには起動したサブスレッドが起動中であることをサブスレッド起動状況記憶手段１Ｃ３に登録し、前記メッセージが起動中のサブスレッドからの終了メッセージである場合には前記サブスレッド起動状況記憶手段１Ｃ３から起動中であることを消去する。
【００３８】
また、本実施例１のメインスレッド１Ｃ４は、メインスレッド宛のサブスレッドの終了メッセージを処理する際、終了するサブスレッドよりも優先順位の低いサブスレッドが起動中か否かを判断する低順位サブスレッド起動状況判別手段１Ｃ４ｄと、低順位サブスレッドが起動中の場合には前記低順位サブスレッドの処理を開始させる低順位サブスレッド処理開始手段１Ｃ４ｅとを有する。
なお、前記メインスレッドの低順位サブスレッド処理開始手段１Ｃ４ｅは、本実施例１では後述のフローチャートから分かるように、前記起動中の低順位サブスレッドの処理を直接開始させるようになっているが、前記低順位サブスレッドの処理を直接開始させる代わりに、前記低順位サブスレッドの処理を開始させるメッセージを前記低順位サブスレッド宛に送信するように構成することが可能である。
【００３９】
１Ｃ５：サブスレッド
サブスレッド１Ｃ５は、マルチスレッド（１つのアプリケーションソフトがスレッドと呼ばれる処理単位を複数生成し、平行して複数の処理を行うこと。）に対応したＯＳ上での、ソフトウエアの実行単位の１つであり、メッセージ登録用サブスレッド１Ｃ５ａと、前記メッセージ登録機能以外の他の特定の機能を実現するプログラムである複数の特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）とを有する。
前記メッセージ登録用サブスレッド１Ｃ５ａは、前記メインスレッド１Ｃ４および複数の特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）宛のメッセージを受信した時に前記受信メッセージを受信した順に共通のメッセージキュー１Ｃ１に登録する機能を有するプログラムである。
【００４０】
前記特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）は、前記メッセージキューに登録されたメッセージの中で一番古いメッセージが所定の特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したメッセージを前記メッセージキューから消去し、前記消去したメッセージの処理を終了したときにメインスレッド宛の処理終了メッセージを送信する。
この特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）は、優先順位の無い特定機能実現用サブスレッド（１Ｃ５ｂ１，１Ｃ５ｂ２，…）と、優先順位のある特定機能実現用サブスレッド（１Ｃ５ｃ１，１Ｃ５ｃ２，…）
１Ｃ５ｃ（サブスレッド優先順位記憶手段１Ｃ２に優先順位を記憶されている特定機能実現用サブスレッド）とを有している。
なお、処理の優先順位を記憶された特定機能実現用サブスレッド１Ｃ５ｃは、後述のサブスレッドのフローチャートのＳＴ３１、ＳＴ３３から分かるように、サブスレッドの起動時に、優先順位の高い他のサブスレッドが起動中か否かを判断する優先サブスレッド起動状況判別手段１Ｃ５ｃａと、優先順位の高い他のサブスレッドが起動中の場合には処理開始を遅延させる処理開始遅延手段１Ｃ５ｃｂおよび処理が終了したメッセージをメッセージキューから消去するメッセージ消去手段１Ｃ５ｃｃとを有する。
【００４１】
図３において課金管理サーバＫＫＳは、ＫＫＳコントローラ６Ｃを有しており、ＫＳコントローラ６Ｃは、外部または他のコントローラとの信号の入出力および入出力信号レベルの調節等を行うＩ／Ｏ（入出力インターフェース）、必要な処理を行うためのプログラムおよびデータ等が記憶されたＲＯＭ（リードオンリーメモリ）、必要なデータを一時的に記憶するためのＲＡＭ（ランダムアクセスメモリ）、前記ＲＯＭに記憶されたプログラムに応じた処理を行うＣＰＵ（中央演算処理装置）、ならびにクロック発振器等を有するコンピュータにより構成されており、前記ＲＯＭに記憶されたプログラムを実行することにより種々の機能を実現することができる。
前記ＫＳコントローラ６Ｃは、次の機能６Ｃ１〜６Ｃ３を有している。
６Ｃ１：課金データ送信要求手段、
課金データ送信要求手段６Ｃ１は、公衆回線Ｋを介して定期的に画像形成装置Ｕに課金データ送信要求を行う。
６Ｃ２：課金データ受信手段、
課金データ受信手段６Ｃ２は、画像形成装置Ｕから送信された課金データ（プリント枚数）を受信する。
６Ｃ３：課金データ記録管理手段
課金データ記録管理手段６Ｃ３は、受信した課金データを記録し、管理する。
【００４２】
（制御部のフローチャート）
図４は実施例１の画像形成装置のメインコントローラのメッセッージキューへのメッセージ登録用サブスレッドのフローチャートである。
図４のフローチャートの各ＳＴ（ステップ）の処理は、前記コントローラＣのＲＯＭに記憶されたプログラムに従って行われる。また、この処理は画像形成装置のメインコントローラの他のスレッドの処理と並行してマルチスレッドで実行される。
図４に示すメッセージ登録処理のフローチャートは電源オンにより開始される。
図４のステップＳＴ１において、メインスレッド又はサブスレッドへのメッセージを受信したか否か判断する。イエス（Ｙ）の場合はＳＴ２に移り、ノー（Ｎ）の場合はＳＴ３に移る。
ＳＴ２において、受信したメッセージをメッセージキューに順次登録番号（Ｎｏ.）を付けて登録する。次にＳＴ３に移る。
ＳＴ３においてメッセージキューにＮｏ.１のメッセージが登録されているか否か判断する。ノー（Ｎ）の場合はＳＴ４に移り、イエス（Ｙ）の場合は前記ＳＴ１に戻る。
ＳＴ４においてメッセージキューにＮｏ．２以下のメッセージが登録されているか否か
判断する。イエス（Ｙ）の場合はＳＴ５に移り、ノー（Ｎ）の場合は前記ＳＴ１に戻る。
ＳＴ５において、登録されているＮｏ.２以下のメッセージＮｏ.を順次繰り上げる。
次に前記ＳＴ１に戻る。
【００４３】
図５は実施例１の画像形成装置のメインコントローラのメインスレッドの処理のフローチャートである。
図５のフローチャートの各ＳＴ（ステップ）の処理は、前記コントローラＣのＲＯＭに記憶されたプログラムに従って行われる。また、この処理は画像形成装置のメインコントローラの他のスレッドの処理と並行してマルチスレッドで実行される。
図５に示すメインスレッドのフローチャートは電源オンにより開始される。
図５のＳＴ１１においてメッセージキューに登録されたメッセージ有りか否か判断する。ノー（Ｎ）の場合はＳＴ１１を繰り返し実行する。イエス（Ｙ）の場合はＳＴ１２に移る。
ＳＴ１２において登録されているメッセージ中で最初に登録された（一番古い）メッセージ（すなわち、Ｎｏ.１のメッセージ）の宛先はメインスレッドか否か判断する。ノー（Ｎ）の場合は前記ＳＴ１１に戻り、イエス（Ｙ）の場合はＳＴ１３に移る。
【００４４】
ＳＴ１３において登録されているメッセージ中で最初に登録された（１番古い）メッセージ（Ｎｏ.１のメッセージ）の処理はサブスレッドの起動処理か否か判断する。イエス（Ｙ）の場合はＳＴ１４に移り、ノー（Ｎ）の場合はＳＴ１５に移る。
ＳＴ１４において、次の処理を実行する。
（１）サブスレッド起動。
（２）起動したサブスレッドが起動中であることをサブスレッド起動状況記憶手段１Ｃ３に登録。
（３）起動したサブスレッドへのメッセージを登録するアドレスとしてメッセージキューのアドレスをサブスレッド起動状況記憶手段Ｃ３に登録。
（４）メッセージキューに登録されたメッセージであって処理が終了したメッセージをメッセージキューから消去。
次に前記ＳＴ１１に戻る。
【００４５】
ＳＴ１５において登録されているメッセージ中で最初に登録された（１番古い）メッセージの処理はサブスレッドの終了処理か否か判断する。イエス（Ｙ）の場合はＳＴ１６に移り、ノー（Ｎ）の場合はＳＴ１９に移る。
ＳＴ１６において終了するサブスレッドより優先順位の低い他のサブスレッドが起動中か否か判断する。イエス（Ｙ）の場合はＳＴ１７に移り、ノー（Ｎ）の場合はＳＴ１８に移る。
ＳＴ１７において起動中の優先順位の低いサブスレッドに処理開始メッセージを送信する。次にＳＴ１８に移る。
ＳＴ１８において次の処理を実行する。
（１）終了したサブスレッドに関する登録情報をサブスレッド起動状況記憶手段Ｃ３から消去する（サブスレッド終了）。
（２）処理が終了したメッセージをメッセージキューから消去する。
次に前記ＳＴ１１に戻る。
ＳＴ１９において次の処理を実行する。
（１）登録されているメッセージ中で最初に登録された（１番古い）メッセージの処理をする。
（２）処理が終了したメッセージをメッセージキューから消去する。
次に前記ＳＴ１１に戻る。
【００４６】
図６は前記メインスレッドのＳＴ１４で起動されたサブスレッドよりも優先順位の高いサブスレッドが無い特定機能実現用サブスレッドが起動されたときの前記起動されたサブスレッドの処理のフローチャートである。
この図６のサブスレッドは他のスレッドとマルチスレッドで実行される。
図６のサブスレッドがスタートすると、ＳＴ２１においてサブスレッドの処理を実行する。
ＳＴ２２においてサブスレッドの処理終了のメッセージをメインスレッド（図５のフローチャート参照）に送信する。この段階で、サブスレッドの処理は実質的に終了しているが、前記メインスレッドのフローチャートのＳＴ１４でサブスレッド起動状況記憶手段Ｃ３に登録された次のデータ（サブスレッドに関する登録情報）（１），（２）は消去されていない。
（１）サブスレッドが起動中であることを示すデータ。
（２）サブスレッドへのメッセージを登録するアドレス（メッセージキュ-）を指定するデータ。
【００４７】
次にＳＴ２３で終了（形式的な終了。すなわち、前記サブスレッド起動状況記憶手段Ｃ３に登録されたデータ（サブスレッドに関する登録情報）（１），（２）がメインスレッドにより消去されること）を待つ。
前記メインスレッドのＳＴ１８において、サブスレッド起動状況記憶手段Ｃ３に登録されている前記データ（サブスレッドに関する登録情報）（１），（２）が消去されると、サブスレッドが形式的にも終了されたことになる。
このとき、サブスレッドはメインスレッドにより終了されたことになる。
なお、サブスレッドの形式的終了はサブスレッド自身で行うことも可能である。
【００４８】
図７は前記メインスレッドのＳＴ１４で起動されたサブスレッドより優先順位の高いサブスレッドが有る場合の特定機能実現用サブスレッドが起動されたときの起動されたサブスレッドの処理のフローチャートである。
この図７のサブスレッドは他のスレッドとマルチスレッドで実行される。
図７のサブスレッドがスタートすると、ＳＴ３１において他の優先順位の高いサブスレッドが起動中か否か判断する。ノー（Ｎ）の場合はＳＴ３２に移り、イエス（Ｙ）の場合はＳＴ３３に移る。
ＳＴ３２において起動したサブスレッドの処理を実行する。次にＳＴ３５に移る。
ＳＴ３３においてサブスレッド宛の処理開始メッセージがＭＱ（メッセージキュー）のＮｏ.１のメッセージ（１番古いメッセージ）として登録されたか否か判断する。ノー（Ｎ）の場合はＳＴ３３を繰り返し実行する。イエス（Ｙ）の場合はＳＴ３４に移る。
ＳＴ３４において次の処理を実行する。
（１）Ｎｏ.１のメッセージに応じてサブスレッドの処理を開始して実行する。
（２）実行したＮｏ.１のメッセージをメッセージキューから消去する。
【００４９】
ＳＴ３５においてサブスレッドの処理終了のメッセージをメインスレッド（図５のフローチャート参照）に送信する。この段階で、サブスレッドの処理は実質的に終了しているが、前記メインスレッドのフローチャートのＳＴ１４でサブスレッド起動状況記憶手段Ｃ３に登録された次のデータ（サブスレッドに関する登録情報）（１），（２）は消去されていない。
（１）サブスレッドが起動中であることを示すデータ。
（２）サブスレッドへのメッセージを登録するアドレス（メッセージキュー）を指定するデータ。
次にＳＴ３６で終了（形式的な終了）を待つ。すなわち、前記サブスレッド起動状況記憶手段Ｃ３に登録されたデータ（サブスレッドに関する登録情報）（１），（２）がメインスレッドにより消去されること）を待つ。
前記メインスレッドのＳＴ１８において、サブスレッド起動状況記憶手段Ｃ３に登録されている前記データ（サブスレッドに関する登録情報）（１），（２）が消去されると、サブスレッドが形式的にも終了されたことになる。
このとき、サブスレッドはメインスレッドにより終了されたことになる。
なお、サブスレッドの形式的終了はサブスレッド自身で行うことも可能である。
【００５０】
図８はメッセージキューに順次登録されるメッセージの具体例の説明図であり、図８Ａはメッセージの具体例の説明中で使用される略記号表、図８Ｂは順次登録されるメッセージの具体例、図８Ｃは前記図８ＢのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられたときのメッセージキューに登録されたメッセージの具体例、図８Ｄは前記図８ＣのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられたときのメッセージキューに登録されたメッセージの具体例を示す図である。
図８Ａには、図８〜図１０に示すメッセージキューに登録されたメッセージの具体例の説明中で使用される次の略記号表が記載されている。
ＭＱ：メッセージキュー
ＭＳ：メインスレッド
ＳＳ（１Ｃ５ｂ２，１Ｃ５ｂ２，…，１Ｃ５ｃ１，１Ｃ５ｃ２，…）：サブスレッド
ＳＳ１（１Ｃ５ｃ１）：課金データ送信用ＳＳ（サブスレッド）
ＳＳ２（１Ｃ５ｃ２）：課金データリセット用ＳＳ（サブスレッド）
ＵＩ：ユーザインタフェース
ＫＫＳ：課金データ管理サーバ
ＴＭｉ（ｉ＝１，２，…）：メッセージキューに登録されたメッセージ
【００５１】
図８Ｂにはメッセージキューの登録メッセージの具体例として次の例が記載されている。
Ｎｏ. ：ＴＭi（登録メッセージ）                  ：（送信元→宛先）
１  ：ＴＭ1（課金データ送信要求メッセージ）    ：（ＫＫＳ→ＭＳ）
２  ：ＴＭ2（……………………………………）    ：（  …  → … ）
３  ：ＴＭ3（課金テ゛ータリセット要求メッセージ）      ：（ＵＩ  →ＭＳ）
４  ：ＴＭ4（……………………………………）    ：（  …  → … ）
なお、前記図８Ｂに示された登録メッセージの例ＴＭ2，ＴＭ4は課金データ送信要求に応じて行う処理とは関係のないメッセージである。
図８Ｂに示すように、メッセージキューのＮｏ.１に登録されているメッセージ（最も古いメッセージ）が課金管理サーバＫＫＳから画像形成装置Ｕのメインスレッドに送信された課金データ送信要求メッセージである場合には、メインスレッドは課金データ送信要求メッセージに応じた処理を実行する。その処理の詳細は後で図１１Ａにより説明する。
なお、図１１Ａに示すメインスレッドの処理により課金データ送信用サブスレッドＳＳ１が起動するが、前記起動した課金データ送信用サブスレッドＳＳ１の処理は図１１Ｂにより後述する。
【００５２】
図８Ｃにはメッセージキューの登録メッセージの具体例として次の例が記載されている。
Ｎｏ. ：ＴＭi（登録メッセージ）                  ：（送信元→宛先）
１  ：ＴＭ1（……………………………………）    ：（  …  → … ）
２  ：ＴＭ2（課金テ゛ータリセット要求メッセージ）      ：（ＵＩ  →ＭＳ）
３  ：ＴＭ3（……………………………………）    ：（  …  → … ）
図８Ｃに示したメッセージキューの登録メッセージの具体例は、前記図８ＢのＮｏ.１の登録メッセージＴＭ1（課金データ送信要求メッセージ）の処理をメインスレッドが実行してから、図８ＢのＮｏ.１の登録メッセージＴＭ1（課金データ送信要求メッセージ）を消去した後、残りのＮｏ.２〜Ｎｏ.４の登録メッセージの登録番号Ｎｏ.を繰り上げた状態を示している。
【００５３】
図８Ｄにはメッセージキューの登録メッセージの具体例として次の例が記載されている。
Ｎｏ. ：ＴＭi（登録メッセージ）                  ：（送信元→宛先）
１  ：ＴＭ1（課金テ゛ータリセット要求メッセージ）      ：（ＵＩ  →ＭＳ）
２  ：ＴＭ2（……………………………………）    ：（  …  → … ）
図８Ｄに示したメッセージキューの登録メッセージの具体例は、前記図８ＣのＮｏ.１の登録メッセージＴＭ1（……………………………………）の宛先であるスレッド（メインスレッドまたはサブスレッド）が、前記メッセージＴＭ１に応じた処理を実行してから、図８ＣのＮｏ.１の登録メッセージＴＭ1（……………………………………）を消去した後、残りのＮｏ.２〜Ｎｏ.３の登録メッセージの登録番号Ｎｏ.を繰り上げた状態を示している。
【００５４】
図８Ｄに示すように、メッセージキューのＮｏ.１に登録されているメッセージ（最も古いメッセージ）が画像形成装置ＵのＵＩ（ユーザインタフェース）からメインスレッドに送信された課金データリセット要求メッセージである場合には、メインスレッドは課金データリセット要求メッセージに応じた処理を実行する。その処理の詳細は後で図１２Ａにより説明する。
なお、図１２Ａに示すメインスレッドの処理により課金データリセット用サブスレッドＳＳ２が起動するが、前記起動した課金データリセット用サブスレッドＳＳ２の処理は図１２Ｂにより後述する。
【００５５】
図９はメッセージキューに順次登録されるメッセージの具体例の説明図であり、図９Ａはメッセージの具体例の説明中で使用される略記号表、図９Ｂは順次登録されるメッセージの具体例で前記図８ＤのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられ且つ新たに図９Ｂに示すメッセージＴＭ２（課金データ送信終了メッセージ）がメッセージキューに登録された状態のメッセージの具体例、図９Ｃは前記図９ＢのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられ且つ図９Ｃに示す新たにメッセージＴＭ２（……………………………………）がメッセージキューに登録された状態の具体例、図９Ｄは前記図９ＣのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられ且つ新たに図９Ｄに示すメッセージＴＭ２（課金データリセット処理開始メッセージ）、ＴＭ３（……………………………………）がメッセージキューに登録された状態の具体例を示す図である。
【００５６】
図９Ａには、図８〜図１０に示すメッセージキューに登録されたメッセージの具体例の説明中で使用される略記号表（図８Ａと同じ略記号表）が記載されている。
図９Ｂにはメッセージキューの登録メッセージの具体例として次の例が記載されている。
Ｎｏ. ：ＴＭi（登録メッセージ）                  ：（送信元→宛先）
１  ：ＴＭ1（……………………………………）    ：（  …  → … ）
２  ：ＴＭ2（課金データ送信終了メッセージ）    ：（ＳＳ１→ＭＳ）
図９Ｂに示したメッセージキューの登録メッセージの具体例は、前記図８ＤのＮｏ.１の登録メッセージＴＭ1（課金データリセット要求メッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.２がＮｏ.１に繰り上げられ且つ新たに図９Ｂに示すメッセージＴＭ２（課金データ送信終了メッセージ）がメッセージキューに登録された状態を示している。
【００５７】
図９Ｃにはメッセージキューの登録メッセージの具体例として次の例が記載されている。
Ｎｏ. ：ＴＭi（登録メッセージ）                  ：（送信元→宛先）
１  ：ＴＭ1（課金データ送信終了メッセージ）    ：（ＳＳ１→ＭＳ）
２  ：ＴＭ2（……………………………………）    ：（  …  → … ）
図９Ｃに示したメッセージキューの登録メッセージの具体例は、前記図９ＢのＮｏ.１の登録メッセージＴＭ1（……………………………………）の宛先であるスレッド（メインスレッドまたはサブスレッド）により、前記メッセージＴＭ１に応じた処理が終了して前記処理済のメッセージ（図９ＢのＮｏ.１の登録メッセージＴＭ1（……………………………………）が消去された際の残りのメッセージ（課金データ送信終了メッセージ）のＮｏ.２がＮｏ.１に繰り上げられ且つ新たに図９ＣのＮｏ.２に示すメッセージＴＭ２（……………………………………）がメッセージキューに登録された状態を示している。
【００５８】
図９Ｃに示すように、メッセージキューのＮｏ.１に登録されているメッセージ（最も古いメッセージ）がＳＳ１（課金データ送信用サブスレッド）からＭＳ（メインスレッド）に送信された課金データ送信終了メッセージである場合には、メインスレッドは課金データ送信終了メッセージに応じた処理を実行する。その処理の詳細は、前記図５に示すメインスレッドのフローチャートのＳＴ１５〜ＳＴ１８に示したとおりである。
図５のメインスレッドのフローチャートのＳＴ１５〜ＳＴ１７から分かるように、ＭＳ（メインスレッド）がサブスレッドの終了処理を実行する際（ＳＴ１５参照）には、終了するサブスレッドより優先順位の低い他のサブスレッドが起動中（ＳＴ１６参照）の場合には、起動中の優先順位の低いサブスレッドに処理開始メッセージを送信する。
すなわち、前記図８ＢのＮｏ.１のメッセージ（課金データ送信要求メッセージ）の処理によりＳＳ１（課金データ送信用サブスレッド）が起動してから前記ＳＳ１が終了するまでの間に、図８ＤのＮｏ.１のメッセージ（課金データリセット要求メッセージ）の処理によりＳＳ２（課金データリセット用サブスレッド）が起動した場合には、前記ＳＳ１（課金データ送信用サブスレッド）よりも優先順位の低いＳＳ２（課金データリセット用サブスレッド）は、起動した状態で処理開始メッセージを受信するまで処理開始を行わない。
【００５９】
すなわち、前記優先順位の高いＳＳ１（課金データ送信用サブスレッド）の処理が終了して、ＳＳ１からＭＳ（メインスレッド）宛に課金データ送信終了メッセージが送信された時に、ＭＱ（メッセージキュー）に課金データ送信終了メッセージが登録される（図９ＢのＮｏ.２の登録メッセージＴＭ２参照）。
そして、前記課金データ送信終了メッセージが図９Ｃに示すようにメッセージキューのＮｏ.１のメッセージとなったときに、前記図５のメインスレッドのフローチャートのＳＴ１５〜ＳＴ１７の処理により、課金データリセット処理開始のメッセージがＭＳ（メインスレッド）からＳＳ２（課金データリセット用サブスレッド）に送信される。
【００６０】
図９Ｄにはメッセージキューの登録メッセージの具体例として次の例が記載されている。
Ｎｏ. ：ＴＭi（登録メッセージ）                  ：（送信元→宛先）
１  ：ＴＭ1（……………………………………）    ：（  …  → … ）
２  ：ＴＭ2（課金データリセット処理開始）      ：（ ＭＳ →ＳＳ２）
図９Ｄに示したメッセージキューの登録メッセージの具体例は、前記図９ＣのＮｏ.１の登録メッセージＴＭ1（課金データ送信終了メッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.２がＮｏ.１に繰り上げられ且つ新たに図９Ｄに示すメッセージＴＭ２（課金データリセット処理開始メッセージ）およびＴＭ３（……………………………………）が順次メッセージキューに登録されたときの状態を示している。
【００６１】
図１０はメッセージキューに順次登録されるメッセージの具体例の説明図であり、図１０Ａはメッセージの具体例の説明中で使用される略記号表、図１０Ｂは順次登録されるメッセージの具体例で前記図９ＤのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられたときのメッセージキューに登録されたメッセージの具体例、図１０Ｃは前記図１０ＢのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられ且つ図９Ｃに示す新たにメッセージＴＭ２（リセット処理終了メッセージ）がメッセージキューに登録された状態のメッセージの具体例、図１０Ｄは前記図１０ＣのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去され且つ新たに図１０Ｄに示すメッセージＴＭ２（……………………………………）、ＴＭ３（……………………………………）がメッセージキューに登録された状態のメッセージの具体例を示す図である。
【００６２】
図１０Ａには、図８〜図１０に示すメッセージキューに登録されたメッセージの具体例の説明中で使用される略記号表（図８Ａ、図９Ａと同じ略記号表）が記載されている。
図１０Ｂにはメッセージキューの登録メッセージの具体例として次の例が記載されている。
Ｎｏ. ：ＴＭi（登録メッセージ）                  ：（送信元→宛先）
１  ：ＴＭ1（課金データリセット処理開始）          ：（  ＭＳ→ＳＳ２）
１  ：ＴＭ1（……………………………………）    ：（  …  → … ）
図１０Ｂに示したメッセージキューの登録メッセージの具体例は、前記図９ＤのＮｏ.１の登録メッセージＴＭ1（……………………………………）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.２およびＮｏ.３が繰り上げられたときの状態を示している。
図１０Ｂに示すように、メッセージキューのＮｏ.１に登録されているメッセージ（最も古いメッセージ）がＭＳ（メインスレッド）からＳＳ２（課金データリセット用サブスレッド）に送信された課金データリセット処理開始メッセージである場合には、ＳＳ２（課金データリセット用サブスレッド）は課金データリセット処理を開始する。その処理は後述の図１２Ｂにより後述する。
【００６３】
図１０Ｃにはメッセージキューの登録メッセージの具体例として次の例が記載されている。
Ｎｏ. ：ＴＭi（登録メッセージ）                  ：（送信元→宛先）
１  ：ＴＭ1（……………………………………）    ：（  …  → … ）
２  ：ＴＭ2（リセット処理終了）                ：（ＳＳ２→ＭＳ）
図１０Ｃに示したメッセージキューの登録メッセージの具体例は、前記図１０ＢのＮｏ.１の登録メッセージＴＭ1（課金データリセット処理開始）の宛先であるＳＳ２（課金データリセット用サブスレッド）により、前記メッセージＴＭ１に応じた処理が終了して前記処理済のメッセージ（図１０ＢのＮｏ.１の登録メッセージＴＭ1（課金データリセット処理開始）が消去された際の残りのメッセージＴＭ２（……………………………………）のＮｏ.２がＮｏ.１に繰り上げられ且つ新たに図１０ＣのＮｏ.２に示すメッセージＴＭ２（リセット処理終了）がメッセージキューに登録された状態を示している。
【００６４】
図１０Ｄにはメッセージキューの登録メッセージの具体例として次の例が記載されている。
Ｎｏ. ：ＴＭi（登録メッセージ）                  ：（送信元→宛先）
１  ：ＴＭ1（リセット処理終了）                ：（ＳＳ２→ＭＳ）
２  ：ＴＭ2（……………………………………）    ：（  …  → … ）
３  ：ＴＭ3（……………………………………）    ：（  …  → … ）
図１０Ｄに示したメッセージキューの登録メッセージの具体例は、前記図１０ＣのＮｏ.１の登録メッセージＴＭ1（……………………………………）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.２がＮｏ.１に繰り上げられ且つ新たに図１０Ｄに示すメッセージＴＭ２（……………………………………）およびＴＭ３（……………………………………）が順次メッセージキューに登録された状態を示している。
図１０Ｄに示すように、メッセージキューのＮｏ.１に登録されているメッセージ（最も古いメッセージ）がＳＳ２（課金データリセット用サブスレッド）からＭＳ（メインスレッド）に送信されたリセット終了処理メッセージである場合には、ＭＳ（メインスレッド）は、課金データリセット処理終了メッセージに応じた処理を実行する。その処理の詳細は、前記図５に示すメインスレッドのフローチャートのＳＴ１５、ＳＴ１６、およびＳＴ１８に示したとおりである。
【００６５】
図１１は前記図８ＢのＭＱ（メッセージキュー）に登録されたＮｏ.１のメッセージ（課金データ送信要求）を処理する際のＭＳ（メインスレッド）の処理およびその処理により起動される課金データ送信用サブスレッドの処理の説明図であり、図１１ＡはＭＳ（メインスレッド）の処理のフローチャート、図１１ＢはＳＳ（サブスレッド）の処理を示すフローチャートである。
図１１ＡのＳＴ１４−１は、前記図５のＳＴ１３の次のＳＴ１４で起動されるサブスレッドが課金データ送信用サブスレッドである場合の処理のフローチャートである。
図１１ＡのＳＴ１４−１において、次の処理を実行する。
（１）ＳＳ１（課金データ送信用サブスレッド）起動。
（２）サブスレッド起動状況記憶手段１Ｃ３に、起動したＳＳ１（課金データ送信用サブスレッド）が起動中であることを登録。
（３）サブスレッド起動状況記憶手段Ｃ３に、起動したＳＳ１（課金データ送信用サブスレッド）へのメッセージを登録するアドレスとしてメッセージキューを登録。
（４）ＭＱ（メッセージキュー）に登録されたメッセージであって処理が終了したメッセージ（課金データ送信要求メッセージ）をメッセージキューから消去。
【００６６】
図１１ＢのＳＳ１（課金データ送信用サブスレッド）の処理のフローチャートは、前記図１１Ａに示すＭＳ（メインスレッド）のＳＴ１４−１でＳＳ１が起動された時にスタートする。すなわち図１１ＢのＳＳ１の処理は、図５のメインスレッドのＳＴ１４でサブスレッドが起動されたときにスタートする前記図６のＳＳ（サブスレッド）がＳＳ１（課金データ送信用サブスレッド）である場合の処理のフローチャートである。前記図６のＳＴ２１〜ＳＴ２３は図５のＳＴ１４で起動される不特定の優先順位の無いサブスレッドの処理であるが、図１１では特定のサブスレッド（課金データ送信用サブスレッド）の処理を説明するので、前記ＳＴ２１〜ＳＴ２３の代わりにＳＴ２１−１〜ＳＴ２３−１として説明する。
図１１Ｂの課金データ送信用サブスレッドの処理がスタートすると、ＳＴ２１−１においてＫＫＳ（課金データ管理サーバ）への課金データの送信処理を実行する。
次にＳＴ２２−１において、ＫＫＳ（課金データ管理サーバ）への課金データ送信終了メッセージをＭＳ（メインスレッド）に送信する。この送信により、ＭＱ（メッセージキュー）に課金データ送信終了メッセージが登録される（図９ＢのＮｏ.２の登録メッセージＴＭ２参照）。
次にＳＴ２３−１において終了（形式的な終了）を待つ。すなわち、前記ＳＴ１４−１でサブスレッド起動状況記憶手段Ｃ３に登録されたデータ（サブスレッドに関する登録情報）（１），（２）がメインスレッドにより消去されること）を待つ。
前記図５のメインスレッドのＳＴ１８において、サブスレッド起動状況記憶手段Ｃ３に登録されている前記データ（課金データ送信用サブスレッドに関する登録情報）（１），（２）が消去されると、サブスレッドが形式的にも終了されたことになる。
このとき、サブスレッドはメインスレッドにより終了されたことになる。
【００６７】
図１２は前記図８ＤのＭＱ（メッセージキュー）に登録されたＮｏ.１のメッセージ（課金データリセット要求）を処理する際のＭＳ（メインスレッド）の処理およびその処理により起動される課金データリセット用サブスレッドの処理の説明図であり、図１２ＡはＭＳ（メインスレッド）の処理のフローチャート、図１２ＢはＳＳ（サブスレッド）の処理を示すフローチャートである。
図１２ＡのＳＴ１４−２は、前記図５のＳＴ１３の次のＳＴ１４で起動されるサブスレッドが課金データリセット用サブスレッドである場合の処理のフローチャートである。
図１２ＡのＳＴ１４−２において、次の処理を実行する。
（１）ＳＳ２（課金データリセット用サブスレッド）起動。
（２）サブスレッド起動状況記憶手段１Ｃ３に、起動したＳＳ２（課金データリセット用サブスレッド）が起動中であることを登録。
（３）サブスレッド起動状況記憶手段Ｃ３に起動したＳＳ２（課金データリセット用サブスレッド）へのメッセージを登録するアドレスとしてメッセージキューを登録。
（４）ＭＱ（メッセージキュー）に登録されたメッセージであって処理が終了したＮｏ.１のメッセージ（課金データリセット要求メッセージ）をメッセージキューから消去。
【００６８】
図１２ＢのＳＳ２（課金データリセット用サブスレッド）の処理のフローチャートは、前記図１２Ａに示すＭＳ（メインスレッド）のＳＴ１４−２でＳＳ２が起動された時にスタートする。すなわち図１２ＢのＳＳ２の処理は、図５のメインスレッドのＳＴ１４でサブスレッドが起動されたときにスタートする前記図７のＳＳ（サブスレッド）がＳＳ２（課金データリセット用サブスレッド）である場合の処理のフローチャートである。前記図７のＳＴ３１〜ＳＴ３６は図５のＳＴ１４で起動される不特定の優先順位の有るサブスレッドの処理であるが、図１２では特定のサブスレッド（課金データリセット用サブスレッド）の処理を説明するので、前記ＳＴ３１〜ＳＴ３６の代わりにＳＴ３１−１〜ＳＴ３６−１として説明する。
図１２Ｂの課金データリセット用サブスレッドの処理がスタートすると、ＳＴ３１−１において課金データ送信処理用サブスレッドが起動中か否か（他の優先順位の高いサブスレッドが起動中か否か）判断する。ノー（Ｎ）の場合はＳＴ３２−１に移り、イエス（Ｙ）の場合はＳＴ３３−１に移る。
ＳＴ３２−１において起動したサブスレッドの処理（課金データリセット処理）を実行する。次にＳＴ３５−１に移る。
ＳＴ３３−１においてサブスレッド宛の処理開始メッセージ（課金データリセット用サブスレッドの処理開始メッセージ）がＭＱ（メッセージキュー）のＮｏ.１のメッセージ（１番古いメッセージ）として登録されたか否か判断する。ノー（Ｎ）の場合はＳＴ３３−１を繰り返し実行する。イエス（Ｙ）の場合はＳＴ３４−１に移る。
ＳＴ３４−１において次の処理を実行する。
（１）Ｎｏ.１のメッセージに応じてサブスレッドの処理（課金データリセット処理）を開始して実行する。
（２）実行したＮｏ.１のメッセージ（課金データリセット処理開始メッセージ）をＭＱ（メッセージキュー）から消去する。
【００６９】
ＳＴ３５−１においてサブスレッドの処理終了（課金データリセット用サブスレッドの処理終了）のメッセージをメインスレッド（図５のフローチャート参照）に送信する。この段階で、サブスレッドの処理は実質的に終了しているが、前記メインスレッドのフローチャートのＳＴ１４でサブスレッド起動状況記憶手段Ｃ３に登録された次のデータ（サブスレッドに関する登録情報）（１），（２）は消去されていない。
（１）サブスレッドが起動中であることを示すデータ。
（２）サブスレッドへのメッセージを登録するアドレス（メセッセージキュー）を指定するデータ。
次にＳＴ３６−１で終了（形式的な終了）を待つ。すなわち、前記サブスレッド起動状況記憶手段Ｃ３に登録されたデータ（サブスレッドに関する登録情報）（１），（２）がメインスレッドにより消去されること）を待つ。
前記メインスレッドのＳＴ１８において、サブスレッド起動状況記憶手段Ｃ３に登録されている前記データ（サブスレッドに関する登録情報）（１），（２）が消去されると、サブスレッドが形式的にも終了されたことになる。
このとき、サブスレッドはメインスレッドにより終了されたことになる。
なおサブスレッドはサブスレッド自身で終了することも可能である。
【００７０】
図１３は前記図９ＣのＭＱ（メッセージキュー）に登録されたＮｏ.１のメッセージ（課金データ送信用サブスレッドの終了）を処理する際のＭＳ（メインスレッド）のフローチャートである。
この図１３のフローチャートは前記図５のメインスレッドのフローチャートのＳＴ１６〜ＳＴ１８において課金データ送信用サブスレッドを終了する際のフローチャートである。前記図５のＳＴ１６〜ＳＴ１８は不特定のサブスレッドを終了する際の処理であるが、図１３では特定のサブスレッド（課金データ送信用サブスレッド）を終了する際の処理を説明するので、前記ＳＴ１６〜ＳＴ１８の代わりにＳＴ１６−１〜ＳＴ１８−１として説明する。
ＳＴ１６−１において終了するサブスレッドより優先順位の低い他のサブスレッド（課金データリセット用サブスレッド）が起動中か否か判断する。イエス（Ｙ）の場合はＳＴ１７−１に移り、ノー（Ｎ）の場合はＳＴ１８−１に移る。
ＳＴ１７−１において起動中の優先順位の低いサブスレッド（課金データリセット用サブスレッド）に処理開始メッセージを送信する。次にＳＴ１８−１に移る。
ＳＴ１８−１において次の処理を実行する。
（１）終了したサブスレッド（課金データ送信用サブスレッド）に関する登録情報をサブスレッド起動状況記憶手段Ｃ３から消去する（サブスレッド終了）。
（２）処理が終了したメッセージ（図９ＣのＮｏ.１の課金データ送信終了メッセージ）をＭＱ（メッセージキュー）から消去する。
次に前記図５のＳＴ１１に戻る。
【００７１】
図１４は前記図１０ＤのＭＱ（メッセージキュー）に登録されたＮｏ.１のメッセージ（課金データリセット用サブスレッドの終了）を処理する際のＭＳ（メインスレッド）のフローチャートである。
この図１４のフローチャートは前記図５のメインスレッドのフローチャートのＳＴ１６〜ＳＴ１８において課金データリセット用サブスレッドを終了する際のフローチャートである。前記図５のＳＴ１６〜ＳＴ１８は不特定のサブスレッドを終了する際の処理であるが、図１４では特定のサブスレッド（課金データリセット用サブスレッド）を終了する際の処理を説明するので、前記ＳＴ１６〜ＳＴ１８の代わりにＳＴ１６−２〜ＳＴ１８−２として説明する。
ＳＴ１６−２において終了するサブスレッドより優先順位の低い他のサブスレッド（課金データリセット用サブスレッド）が起動中か否か判断する。イエス（Ｙ）の場合はＳＴ１７−２に移り、ノー（Ｎ）の場合はＳＴ１８−２に移る。
ＳＴ１７−２において起動中の優先順位の低いサブスレッド（課金データリセット用サブスレッド）に処理開始メッセージを送信する。次にＳＴ１８−２に移る。
ＳＴ１８−２において次の処理を実行する。
（１）終了したサブスレッド（課金データ送信用サブスレッド）に関する登録情報をサブスレッド起動状況記憶手段Ｃ３から消去する（サブスレッド終了）。
（２）処理が終了したメッセージ（図９ＣのＮｏ.１の課金データ送信終了メッセージ）をＭＱ（メッセージキュー）から消去する。
次に前記図５のＳＴ１１に戻る。
【００７２】
（実施例１の作用）
図３において、前記構成を備えたマルチスレッド処理装置を有する画像形成装置では、他のコントローラであるクライアントコントローラ（ＵＩコントローラ２Ｃ、ＩＯＴコントローラ３Ｃ、ＩＩＴコントローラ４Ｃ、ＫＫＳコントローラ６Ｃ等）に接続された特定コントローラとしてのメインコントローラ１Ｃ）は、マルチスレッドに対応したＯＳ（オペレーティングシステム）上で、所定の機能を実現するためのプログラムであるメインスレッド１Ｃ４およびサブスレッド１Ｃ５を作動させる。
前記サブスレッド１Ｃ５は、前記所定の機能を実現するプログラムであるメッセージ登録用サブスレッド１Ｃ５ａと、特定機能実現用サブスレッド１Ｃ５ｂ，１Ｃ５ｃとを有している。前記メッセージ登録用サブスレッド１Ｃ５ａは、前記メインスレッド１Ｃ４および、特定機能実現用サブスレッド１Ｃ５ｂ，１Ｃ５ｃ宛のメッセージを受信した時に前記受信メッセージを受信した順に共通のメッセージキュー１Ｃ１に登録する（図８〜図１０参照）。
【００７３】
前記メッセージ登録機能以外の他の特定の機能を実現する特定機能実現用サブスレッド１Ｃ５ｂ，１Ｃ５ｃは、前記メッセージキューに登録されたメッセージ（図８〜図１０参照）の中で一番古いメッセージが所定の特定機能実現用サブスレッド宛のメッセージである場合には前記一番古いメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したメッセージを前記メッセージキューから消去し、前記消去したメッセージの処理を終了したときにメインスレッド宛の処理終了メッセージを送信する。
例えば図１０Ｂに示すように、特定機能実現用サブスレッド１Ｃ５ｃの課金データリセット用サブスレッド１Ｃ５ｃ２（図３参照）は、前記メッセージキューに登録されたメッセージ（図１０Ｂ参照）の中で一番古いメッセージ（図１０ＢのＮｏ.１のメッセージ参照）が課金データリセット用サブスレッド１Ｃ５ｃ２宛のメッセージである場合には前記一番古いＮｏ.１のメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したＮｏ.１のメッセージを前記メッセージキューから消去し、前記消去したメッセージの処理を終了したときにメインスレッド宛の処理終了メッセージ（図１０ＣのＮｏ.１メッセージ参照）を送信する。
なお、前記課金データリセット用サブスレッドの処理のフローチャートは前記図１２Ｂに示されている。
【００７４】
前記特定機能実現用サブスレッド１Ｃ５ｂ，１Ｃ５ｃの起動および終了のタイミングを制御するプログラムである前記メインスレッド１Ｃ４は、前記メッセージキューに登録されたメッセージの中で一番古いメッセージがメインスレッド宛のメッセージ（例えば、図８ＢのＮｏ.１に示す課金データ送信要求メッセージのように、ＫＫＳ（課金管理サーバ）からＭＳ（メインスレッド）宛に送信されたメッセージ）である場合には、前記図８Ｂで１番古いＮｏ.１のメッセージに応じた処理を実行し、前記処理の実行と同時に前記実行したメッセージを前記メッセージキューから消去するとともに、前記メッセージの実行に応じてサブスレッド（例えば、課金データ送信用サブスレッド１Ｃ５ｃ１）を起動させたときには起動したサブスレッドが起動中であることをサブスレッド起動状況記憶手段１Ｃ３に登録し、前記メッセージが起動中のサブスレッドからの終了メッセージ（例えば、図９ＣのＮｏ.１メッセージ）である場合には前記サブスレッド起動状況記憶手段１Ｃ３から起動中であることを消去する。
【００７５】
したがって、前記他のコントローラであるクライアントコントローラ２Ｃ，３Ｃ，４Ｃ，６Ｃ等に接続された特定コントローラ１Ｃでは、メインスレッド１Ｃ４宛またはサブスレッド１Ｃ５ｂ，１Ｃ５ｃ宛のメッセージを受信した時には受信した順に受信メッセージがメッセージキューに登録され、前記登録されたメッセージに対応した処理は、必ずメッセージキューに登録された順に実行される。このため、メインスレッド１Ｃ４の各手段１Ｃ４ａ〜１Ｃ４ｅと、複数のサブスレッド１Ｃ５ｂ１，１Ｃ５ｂ２，…、および１Ｃ５ｃ１，１Ｃ５ｃ２，…との各処理間で容易に同期をとる（各処理の実行順序を正確且つ容易に定める）ことができる。
【００７６】
また、前記メインコントローラ１Ｃのサブスレッド優先順位記憶手段１Ｃ２は、優先順位の有る各特定機能実現用サブスレッド１Ｃ５ｃ１，１Ｃ５ｃ２，…の処理の優先順位を記憶する。前記優先順位の有る各特定機能実現用サブスレッド１Ｃ５ｃ１，１Ｃ５ｃ２，…の中で、自分よりも優先順位の高いサブスレッドがあるサブスレッドは、前記優先順位の高いサブスレッドが起動中か否かを判断する優先サブスレッド起動状況判別手段１Ｃ５ｃａと、優先順位の高い他のサブスレッドが起動中の場合には処理開始を遅延させる処理開始遅延手段１Ｃ５ｃｂとを有している。
前記自分よりも優先順位の高いサブスレッド（高順位サブスレッド、例えば、課金管理データ送信用サブスレッド）１Ｃ５ｃ１があるサブスレッド（低順位サブスレッド、例えば、課金データリセット用サブスレッド）１Ｃ５ｃ２は、その起動時に、前記優先サブスレッド起動状況判別手段１Ｃ５ｃａにより、優先順位の高い他のサブスレッド１Ｃ５ｃ１が起動中か否かを判断する。処理開始遅延手段１Ｃ５ｃｂは、高順位の課金管理データ送信用サブスレッド１ｃ５ｃ１が起動中の場合には、低順位の課金データリセット用サブスレッド１Ｃ５ｃ２処理開始を遅延させる。
【００７７】
前記メインスレッド１Ｃ４の低順位サブスレッド起動状況判別手段１Ｃ４ｄは、メインスレッド１Ｃ４宛のサブスレッド１Ｃ５ｃ１，１ｃ５ｃ２，…からの終了メッセージを処理する際、終了するサブスレッド（例えば、課金管理データ送信用サブスレッド１Ｃ５ｃ１）よりも優先順位の低いサブスレッド（例えば、課金データリセット用サブスレッド１ｃ５ｃ２）が起動中か否かを判断する。前記メインスレッド１ｃ４の低順位サブスレッド処理開始手段１ｃ４ｅは、低順位サブスレッド（例えば、課金データリセット用サブスレッド１ｃ５ｃ２）が起動中の場合には前記低順位サブスレッドの処理を開始させる。
なお、前記メインスレッド１Ｃ４の前記低順位サブスレッド処理開始手段は、実施例１のように、メインスレッド宛のサブスレッドからの終了メッセージを処理する際、低順位サブスレッドが起動中の場合には前記低順位サブスレッドの処理を直接開始させる代わりに、前記低順位サブスレッドの処理を開始させるメッセージを前記低順位サブスレッド宛に送信するように構成することが可能である。その場合には、前記メッセージがメッセージキューに登録される。そして、登録されたメッセージがメッセージキューのＮｏ.１の位置に登録されたときに、そのメッセージを受信したサブスレッド（課金データリセット用サブスレッド１ｃ５ｃ２）がその受信メッセージに応じて自ら処理を開始する。
【００７８】
したがって、実施例１の画像形成装置では、メインコントローラ１Ｃは、受信したメッセージを受信順にメッセージキューに登録し、受信メッセージに応じた処理を受信した順に実行するので、各メインスレッド１Ｃ４と複数の各特定機能実現用サブスレッド１Ｃ５ｂ１，１Ｃ５ｂ２，…および１Ｃ５ｃ１，１Ｃ５ｃ２，…との各処理間で容易に同期をとる（各処理の実行順序を正確且つ容易に定める）ことができる。すなわち、同時に作動する各スレッドの処理を所定の順序で実行することができる。
【実施例２】
【００７９】
図１５は実施例２の画像形成装置の制御部の説明図であり、前記実施例１の図３に対応する図である。
図１６は実施例２の画像形成装置のメインコントローラのメインスレッドの処理のフローチャートであり、前記実施例１の図５に対応する図である。
図１７は前記メインスレッドのＳＴ１４で起動されたサブスレッドが優先順位の無い特定機能実現用サブスレッドである場合の前記起動されたサブスレッドの処理のフローチャートであり、前記実施例１の図６に対応する図である。
図１８は前記メインスレッドのＳＴ１４で起動されたサブスレッドが優先順位の有る特定機能実現用サブスレッドである場合の前記起動されたサブスレッドの処理のフローチャートであり、前記実施例１の図７に対応する図である。
なお、この実施例２の説明において、前記実施例１の構成要素に対応する構成要素には同一の符号を付して、その詳細な説明を省略する。
この実施例２は、下記の点で前記実施例１と相違しているが、他の点では前記実施例１と同様に構成されている。
【００８０】
前記実施例１では図３のメインスレッド１Ｃ４には、低順位サブスレッド起動状況判別手段１Ｃ４ｄおよび低順位サブスレッド処理開始手段１Ｃ４ｅが設けられていたが、この実施例２の図１５のメインスレッド１Ｃ４では、前記実施例１の低順位サブスレッド起動状況判別手段１Ｃ４ｄおよび低順位サブスレッド処理開始手段１Ｃ４ｅが省略され且つ、サブスレッド１Ｃ５の優先順位のある特定機能実現用サブスレッド１Ｃ５ｃに低順位サブスレッド起動状況判別手段１Ｃ５ｃｄおよび低順位サブスレッド処理開始メッセージ送信手段１Ｃ５ｃｅを設けている。
また、前記実施例１では、図５のメインスレッドのフローチャートにＳＴ１６およびＳＴ１７が設けられていたが、実施例２の図１６のメインスレッドのフローチャートでは、ＳＴ１６およびＳＴ１７が省略されている。
【００８１】
また、前記実施例１では特定機能実現用サブスレッドの処理が、図６のフローチャートと図７のフローチャートの２種類に分けらていたのに対して、実施例２では特定機能実現用サブスレッドの処理が、図１７のフローチャートと図１８のフローチャートの２種類に分けられる。
（実施例１）
図６のフローチャート：
自分より優先順位の高いサブスレッドが無い特定機能実現用サブスレッドの処理。
図７のフローチャート：
自分より優先順位の高いサブスレッドが有る特定機能実現用サブスレッドの処理。
（実施例２）
図１７のフローチャート：
優先順位の無い特定機能実現用サブスレッドのフローチャートの処理。
図１８のフローチャート：
優先順位の有る特定機能実現用サブスレッドのフローチャートの処理。
【００８２】
実施例２の図１７のフローチャート（優先順位のない特定機能実現用サブスレッドのフローチャート）は、前記実施例１の図６のフローチャート（自分より優先順位の高いサブスレッドが無い特定機能実現用サブスレッドのフローチャート）と同じである。
実施例２の図１８のフローチャート（優先順位の有る特定機能実現用サブスレッドのフローチャート）は、前記実施例１の図７のフローチャートのＳＴ３５の代わりに、ＳＴ３５ａおよびＳＴ３５ｂを有している。実施例２の図１８のフローチャートのその他の処理は前記実施例１の図７のフローチャートと同じである。
図１８のＳＴ３５ａにおいて、他の優先順位の低いサブスレッドが起動中か否か判断する。イエス（Ｙ）の場合はＳＴ３５ｂに移り、ノー（Ｎ）の場合はＳＴ３６に移る。
ＳＴ３５ｂにおいて次の処理を実行する。
（１）サブスレッドの処理終了メッセージをメインスレッドに送信する。
（２）起動中の優先順位の低いサブスレッドに処理開始メッセージを送信する。
【００８３】
この実施例２では、前記実施例１の図５のメインスレッドのＳＴ１６、ＳＴ１７の処理の代わりに、前記図１８のサブスレッドのＳＴ３５ａおよびＳＴ３５ｂの処理を行って、起動中の優先順位の低いサブスレッドの処理を開始させるようにしている。
すなわち、この実施例２では、優先順位の高いサブスレッド（課金データ送信用サブスレッド）１Ｃ５ｃ１の低順位サブスレッド起動状況判別手段１Ｃ５ｃｃは、処理の優先順位を記憶されたサブスレッドの処理終了時に、優先順位の低い他のサブスレッド（課金データリセット用サブスレッド）１Ｃ５ｃ２が起動中か否かを判断する。低順位サブスレッド処理開始メッセージ送信手段１Ｃ５ｃｄは、優先順位の低い他のサブスレッド（課金データリセット用サブスレッド）１Ｃ５ｃ２が起動中の場合には前記低順位サブスレッド（課金データリセット用サブスレッド）１Ｃ５ｃ２の処理を開始させるメッセージを前記低順位サブスレッド宛に送信する。
その場合には、前記メッセージがメッセージキューに登録される。そして、登録されたメッセージがメッセージキューのＮｏ.１の位置に登録されたときに、そのメッセージを受信したサブスレッド（課金データリセット用サブスレッド１ｃ５ｃ２）がその受信メッセージに応じて自ら処理を開始する。
【００８４】
この実施例２のその他の作用は、前記実施例１と同様である。
すなわち、実施例２の画像形成装置では前記実施例１の画像形成装置と同様に、メインコントローラ１Ｃは、受信したメッセージを受信順にメッセージキューに登録し、受信メッセージに応じた処理を受信した順に実行するので、各メインスレッド１Ｃ４と複数の各特定機能実現用サブスレッド１Ｃ５ｂ１，１Ｃ５ｂ２，…および１Ｃ５ｃ１，１Ｃ５ｃ２，…との各処理間で容易に同期をとる（各処理の実行順序を正確且つ容易に定める）ことができる。すなわち、同時に作動する各スレッドの処理を所定の順序で実行することができる。
【産業上の利用可能性】
【００８５】
（変更例）
以上、本発明の実施の形態を詳述したが、本発明は、前記実施の形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内で、種々の変更を行うことが可能である。本発明の変更例を下記に例示する。
（Ｈ01）前記実施例１，２では、メインコントローラ１Ｃを特定コントローラとして説明したが、前記メインコントローラ１Ｃ以外のコントローラであるＩＯＴコントローラ３Ｃ、ＩＩＴコントローラ４Ｃ、ＡＤＦコントローラ５Ｃ、ＫＫＳコントローラ６Ｃ等も前記実施例１のメインコントローラ１Ｃと同様に、メインスレッドおよび複数のサブスレッドの処理をマルチスレッドで処理し、１つのメッセージキューに受信メッセージを受信順に登録して１番古いメッセージから各スレッドにより順次処理することが可能である。
その場合、前記各コントローラ１Ｃ〜６Ｃのいずれか１つを特定コントローラとした場合、他のコントローラがクライアントコントローラとなる。
【図面の簡単な説明】
【００８６】
【図１】図１は本発明のマルチスレッド処理装置を有する画像形成装置と前記画像形成装置に接続されている課金管理サーバおよびパソコン等の説明図である。
【図２】図２は前記図１に示す画像形成装置の縦断面概略図である。
【図３】図３は前記図２の画像形成装置の制御部分の説明図である。
【図４】図４は実施例１の画像形成装置のメインコントローラのメッセッージキューへのメッセージ登録用サブスレッドのフローチャートである。
【図５】図５は実施例１の画像形成装置のメインコントローラのメインスレッドの処理のフローチャートである。
【図６】図６は前記メインスレッドのＳＴ１４で起動されたサブスレッドよりも優先順位の高いサブスレッドが無い特定機能実現用サブスレッドが起動されたときの前記起動されたサブスレッドの処理のフローチャートである。
【図７】図７は前記メインスレッドのＳＴ１４で起動されたサブスレッドより優先順位の高いサブスレッドが有る場合の特定機能実現用サブスレッドが起動されたときの起動されたサブスレッドの処理のフローチャートである。
【図８】図８はメッセージキューに順次登録されるメッセージの具体例の説明図であり、図８Ａはメッセージの具体例の説明中で使用される略記号表、図８Ｂは順次登録されるメッセージの具体例、図８Ｃは前記図８ＢのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられたときのメッセージキューに登録されたメッセージの具体例、図８Ｄは前記図８ＣのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられたときのメッセージキューに登録されたメッセージの具体例を示す図である。
【図９】図９はメッセージキューに順次登録されるメッセージの具体例の説明図であり、図９Ａはメッセージの具体例の説明中で使用される略記号表、図９Ｂは順次登録されるメッセージの具体例で前記図８ＤのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられ且つ新たに図９Ｂに示すメッセージＴＭ２（課金データ送信終了メッセージ）がメッセージキューに登録された状態のメッセージの具体例、図９Ｃは前記図９ＢのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられ且つ図９Ｃに示す新たにメッセージＴＭ２（……………………………………）がメッセージキューに登録された状態の具体例、図９Ｄは前記図９ＣのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられ且つ新たに図９Ｄに示すメッセージＴＭ２（課金データリセット処理開始メッセージ）、ＴＭ３（……………………………………）がメッセージキューに登録された状態の具体例を示す図である。
【図１０】図１０はメッセージキューに順次登録されるメッセージの具体例の説明図であり、図１０Ａはメッセージの具体例の説明中で使用される略記号表、図１０Ｂは順次登録されるメッセージの具体例で前記図９ＤのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられたときのメッセージキューに登録されたメッセージの具体例、図１０Ｃは前記図１０ＢのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去された際の残りのメッセージのＮｏ.が繰り上げられ且つ図９Ｃに示す新たにメッセージＴＭ２（リセット処理終了メッセージ）がメッセージキューに登録された状態のメッセージの具体例、図１０Ｄは前記図１０ＣのＮｏ.１に登録されたメッセージ（１番古いメッセージ）に対応する処理が終了して前記処理済のメッセージがメッセージキューから消去され且つ新たに図１０Ｄに示すメッセージＴＭ２（……………………………………）、ＴＭ３（……………………………………）がメッセージキューに登録された状態のメッセージの具体例を示す図である。
【図１１】図１１は前記図８ＢのＭＱ（メッセージキュー）に登録されたＮｏ.１のメッセージ（課金データ送信要求）を処理する際のＭＳ（メインスレッド）の処理およびその処理により起動される課金データ送信用サブスレッドの処理の説明図であり、図１１ＡはＭＳ（メインスレッド）の処理のフローチャート、図１１ＢはＳＳ（サブスレッド）の処理を示すフローチャートである。
【図１２】図１２は前記図８ＤのＭＱ（メッセージキュー）に登録されたＮｏ.１のメッセージ（課金データリセット要求）を処理する際のＭＳ（メインスレッド）の処理およびその処理により起動される課金データリセット用サブスレッドの処理の説明図であり、図１２ＡはＭＳ（メインスレッド）の処理のフローチャート、図１２ＢはＳＳ（サブスレッド）の処理を示すフローチャートである。
【図１３】図１３は前記図９ＣのＭＱ（メッセージキュー）に登録されたＮｏ.１のメッセージ（課金データ送信用サブスレッドの終了）を処理する際のＭＳ（メインスレッド）のフローチャートである。
【図１４】図１４は前記図１０ＤのＭＱ（メッセージキュー）に登録されたＮｏ.１のメッセージ（課金データリセット用サブスレッドの終了）を処理する際のＭＳ（メインスレッド）のフローチャートである。
【図１５】図１５は実施例２の画像形成装置の制御部の説明図であり、前記実施例１の図３に対応する図である。
【図１６】図１６は実施例２の画像形成装置のメインコントローラのメインスレッドの処理のフローチャートであり、前記実施例１の図５に対応する図である。
【図１７】図１７は前記メインスレッドのＳＴ１４で起動されたサブスレッドが優先順位の無い特定機能実現用サブスレッドである場合の前記起動されたサブスレッドの処理のフローチャートであり、前記実施例１の図６に対応する図である。
【図１８】図１８は前記メインスレッドのＳＴ１４で起動されたサブスレッドが優先順位の有る特定機能実現用サブスレッドである場合の前記起動されたサブスレッドの処理のフローチャートであり、前記実施例１の図７に対応する図である。
【符号の説明】
【００８７】
１Ｃ…特定コントローラ（メインコントローラ）、
１Ｃ１…メッセージキュー、
２Ｃ，３Ｃ，４Ｃ，６Ｃ…クライアントコントローラ、
１Ｃ２…サブスレッド優先順位記憶手段、
１Ｃ３…サブスレッド起動状況記憶手段、
１Ｃ４…メインスレッド、
１Ｃ４ｄ…低順位サブスレッド起動状況判別手段、
１Ｃ４ｅ…低順位サブスレッド処理開始手段、
１Ｃ５…サブスレッド、
１Ｃ５ａ…メッセージ登録用サブスレッド、
１Ｃ５ｂ１，１Ｃ５ｂ２，１Ｃ５ｃ１，１Ｃ５ｃ２…特定機能実現用サブスレッド
１Ｃ５ｃａ…優先サブスレッド起動状況判別手段、
１Ｃ５ｃｂ…処理開始遅延手段、
１Ｃ５ｃｅ …低順位サブスレッド処理開始メッセージ送信手段
１Ｃ５ｃ１…高順位サブスレッド、
１Ｃ５ｃ２…低順位サブスレッド、
【図１】
2005196586.tif 000003
【図２】
2005196586.tif 000004
【図３】
2005196586.tif 000005
【図４】
2005196586.tif 000006
【図５】
2005196586.tif 000007
【図６】
2005196586.tif 000008
【図７】
2005196586.tif 000009
【図８】
2005196586.tif 000010
【図９】
2005196586.tif 000011
【図１０】
2005196586.tif 000012
【図１１】
2005196586.tif 000013
【図１２】
2005196586.tif 000014
【図１３】
2005196586.tif 000015
【図１４】
2005196586.tif 000016
【図１５】
2005196586.tif 000017
【図１６】
2005196586.tif 000018
【図１７】
2005196586.tif 000019
【図１８】
2005196586.tif 000020