JP2001051860A - マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体 - Google Patents

マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体

Info

Publication number
JP2001051860A
JP2001051860A JP11228308A JP22830899A JP2001051860A JP 2001051860 A JP2001051860 A JP 2001051860A JP 11228308 A JP11228308 A JP 11228308A JP 22830899 A JP22830899 A JP 22830899A JP 2001051860 A JP2001051860 A JP 2001051860A
Authority
JP
Japan
Prior art keywords
thread
program
call
threads
processing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11228308A
Other languages
English (en)
Other versions
JP3807588B2 (ja
Inventor
Shinichi Takeda
晋一 武田
Takao Yagi
隆生 八木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP22830899A priority Critical patent/JP3807588B2/ja
Priority to US09/468,490 priority patent/US6857122B1/en
Publication of JP2001051860A publication Critical patent/JP2001051860A/ja
Application granted granted Critical
Publication of JP3807588B2 publication Critical patent/JP3807588B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】マルチスレッドプログラムにより別プロセスの
シングルスレッドプログラムの呼出しを保証して既存資
源を有効に利用する。 【解決手段】複数のスレッドを並行して実行可能なマル
チスレッドプログラム10から別プロセスのシングルス
レッドプログラム18を呼出して実行する場合に、マル
チスレッドプログラム10の特定の1スレッド16によ
りシングルスレッドプログラム18を最初に呼出して実
行する際に、シングルスレッドブログラム18を呼出す
唯一の呼出専用スレッド20を生成して使用する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のスレッドを
並行して実行するマルチスレッドプログラムからシング
ルスレッドプログラムを呼出して実行するマルチスレッ
ド処理装置、処理方法並びにマルチスレッド処理プログ
ラムを格納したコンピュータ可読の記録媒体に関し、特
に、複数のスレッドによる同じシングルスレッドプログ
ラムの呼出しを保証するマルチスレッド処理装置、処理
方法並びにマルチスレッド処理プログラムを格納したコ
ンピュータ可読の記録媒体に関する。
【0002】
【従来の技術】従来、Hot Java等のマルチスレッドで動
作するプログラム、所謂マルチスレッドプログラムにあ
っては、あるスレッドの処理が動的ライブラリとして存
在する既存のCOBOL等のシングルスレッドプログラ
ムを使用した方が速いような場合、マルチスレッドプロ
グラムから既存のシングルスレッドプログラムを呼出し
て動作させる。
【0003】図13は、遠隔メソッド起動RMI(Remot
e Method Invocation )を用いてサーバ上のマルチスレ
ッドプログラムで既存のCOBOLプログラムを呼出し
て実行する場合である。
【0004】マルチスレッドプログラムとして動作する
RMIサーバアプリケーション100は、クライアント
120−1,120−2からのメソッド呼出し(RMI
呼出)を受け付けると、メインスレッドとしてのルート
スレッド114を生成した後に、呼出毎にスレッド11
6−1,116−2を生成して実行する。
【0005】このようにRMIサーバアプリケーション
100は、メソッド呼出しを受けて複数のスレッドを生
成し、これらを並列的に実行することから、必ずマルチ
スレッドプログラムとして動作することになる。
【0006】ここでユーザはスレッド116−1,11
6−2の生成を制御することはできない。このためスレ
ッド116−1,116−2は、任意に既存資産として
のCOBOLプログラム等で記述されたシングルスレッ
ドプログラム118を呼び出して実行する。
【0007】
【発明が解決しようとする課題】しかしながら、マルチ
スレッドプログラムからシングルスレッドプログラムを
呼出して実行する場合には、次の問題点がある。
【0008】まずシングルスレッドプログラム118で
は、1プロセスに1スレッドしかないことを前提に静的
変数のような資源を使っている場合がある。このような
シングルスレッドプログラム118を複数のスレッドが
アクセスするマルチスレッドで動作させると、静的変数
のような資源へのアクセスが競合し、シングルスレッド
プログラムが異常動作する場合がある。
【0009】図14は、図13のスレッド116−1,
116−2の関数によりシングルスレッドプログラムの
静的変数をアクセスした場合の問題を示す。図13のス
レッド116−1,116−2は、非同期に並列に実行
され、それぞれシングルスレッドプログラム118を呼
出すものとする。
【0010】このときスレッド116−1,116−2
の関数「wrap f1(args) 」、「wrapf2(args) 」により
シングセルスレッドプログラム118の静的変数「ptr
」ををアクセスしている。例えばスレッド116−1
による呼出しで、図14の主記憶130の割当てられた
プロセス領域132のスレッド対応領域134−1のf
(1)内でデータ領域136の中に静的変数ptr のメモリ
領域138を割当て、この静的変数ptr に割当てた領域
138にアクセスし、f1()が復帰する前にその領域13
8を開放する。
【0011】スレッド116−2による呼出しでも、同
様にスレッド対応領域134−2のf2()内で静的変数pt
r にメモリ領域138を割当て、この静的変数ptr に割
当てた領域138にアクセスし、f2()が復帰する前にそ
の領域138を開放する。
【0012】スレッド116−1,116−2からのシ
ングルスレッドプログラム118の実行は非同期である
ため、関数f1()とf2()による静的変数ptr のアクセスも
非同期に並列して実行される。このためスレッド116
−1の関数f1()で静的変数ptr にメモリ領域138を割
当てた直後に、スレッド116−2の関数f2()が再び静
的変数ptr にメモリ領域138を割り当てることが起き
る。
【0013】このときスレッド116−1の関数f1()で
静的変数ptr の領域138にアクセスした場合、スレッ
ド116−2の関数f2()による割当てによって意図した
領域ではなくなっており、簡単にメモリオーバーラン等
の異常が起こり、プログラムの異常終了につながる。
【0014】またシングルスレッドプログラム118が
複数のスレッド116−1,116−2で実行された場
合、スレッド116−1,116−2によってシングル
スレッドプログラム118は呼出した順に実行されると
は限らないので、動作順も保証されない。このため、実
行結果が利用者の意図とは異なる場合がある。
【0015】図15は、ブラウザ上で並列に実行される
アプレットから既存資産であるシングルスレッドプログ
ラムを呼出す場合である。クライアント142のブラウ
ザ144上に生成されたスレッド116−1,116−
2よってWWWサーバ140のアプレット146−1,
146−2をダウンロードすると、ブラウザ上で複数の
アプレット146−1,146−2が並列に実行され
る。
【0016】この場合にも、ユーザはアプレット146
−1,146−2の生成を制御できない。このためアプ
レット146−1,146−2は、任意に既存資産とし
てのCOBOLプログラム等で記述されたシングルスレ
ッドプログラム118を呼び出して実行する。そのため
図14に示した静的変数のような資源へのアクセスが競
合し、シングルスレッドプログラムが異常動作する場合
がある。
【0017】このようなマルチスレッドプログラムから
既存のシングルスレッドプログラムを呼出して実行した
場合の問題を解決するため、マルチスレッドプログラム
からシングルスレッドプログラムを呼出す際に別のプロ
セスを生成し、その中でシングルスレッドプログラムを
実行することが考えられる。しかし、新たなプロセスの
生成はデータ領域の生成を伴うことから負荷が大きく、
性能が悪い。
【0018】また既存のシングルスレッドプログラムを
マルチスレッドプログラムに作りなおすことも考えられ
る。しかし、既存のシングルスレッドプログラムをマル
チスレッドプログラムに作りなおすことは、工数がかか
り開発効率が悪い。
【0019】本発明は、マルチスレッドプログラムによ
りシングルスレッドプログラムの呼出しを保証して既存
資源を有効に利用できるようにしたマルチスレッド処理
装置、処理方法並びにマルチスレッド処理プログラムを
格納したコンピュータ可読の記録媒体を提供することを
目的とする。
【0020】
【課題を解決するための手段】図1は本発明の原理説明
図である。
【0021】本発明は、図1(A)のように、複数のス
レッド16を並行して実行可能なマルチスレッドプログ
ラム10からシングルスレッドプログラム18を呼出し
て実行するマルチスレッド処理装置であり、マルチスレ
ッドプログラム10の特定の1スレッド16によりシン
グルスレッドプログラム18を最初に呼出して実行する
際に生成され、シングルスレッドブログラム18を呼出
す唯一の呼出専用スレッド20を設けたことを特徴とす
る。
【0022】このようにシングルスレッドプログラムを
マルチスレッドプログラム内に生成した常に同じ呼出専
用スレッドから呼出す仕組みを設けたことで、シングル
スレッドプログラムが静的変数のような資源を使用して
いた場合でも、資源に対する複数のスレッドからのアク
セスが競合することがない。
【0023】またマルチスレッドプログラムからシング
ルスレッドプログラムを呼出す際に新たに別プロセスを
生成しないで済むため、実行性能が向上する。更に、マ
ルチスレッドプログラムからシングルスレッドプログラ
ムを呼出す際に、シングルスレッドプログラムをマルチ
スレッドプログラムに作り直す必要がないため、開発効
率が向上する。
【0024】呼出専用スレッド20は、マルチスレッド
プログラム10で生成された複数のスレッド16から呼
出された順にシングルスレッドプログラム18を呼出
す。このためマルチスレッドプログラム内の複数のスレ
ッドが呼出した順でシングルスレッドプログラムが実行
され、ユーザの意図した実行結果が得られる。
【0025】呼出専用スレッド20は、マルチスレッド
プログラム10のスレッド16からの呼出要求として投
入される同期イベントを格納する先入れ先出し構成(FIF
O 構成)のイベントキュー26を備え、イベントキュー
26から同期イベントを順番に取出してイングルスレッ
ドプログラム18を実行する。
【0026】呼出専用スレッド20のイベントキュー2
6に投入される同期イベントは、図1(C)のように、
呼出すシングルスレッドプログラム18を特定するため
の情報として、少なくともメソッド名及び呼出元スリッ
ドIDを格納したレコードである。尚、レコードにはこ
れ以外にライブラリ名、メソッドプロトタイプ、復帰値
と引数を格納してもよい。
【0027】呼出専用スレッド20は、マルチスレッド
プログラム10で生成した最上位スレッド(ルートスレ
ッド又はメインスレッド)14のグループに属すること
で、最上位スレッド14の終了に同期して終了する。
【0028】本発明で生成したシングルスレッドプログ
ラム18を呼出す唯一の呼出専用スレッド20は、一度
生成されたらプロセスが有効である間存在するが、プロ
セスの終了時に正しくスレッドが終了させる必要があ
る。そこで呼出専用スレッド18を最上位のルートスレ
ッド(メインスレッド)14と同じスレッドグループに
属するようにし、ルートスレッド(メインスレッド)の
終了時に呼出専用スレッド20が終了することを保証す
る。
【0029】ユーザスレッド16は、シングルスレッド
プログラム18を呼出す際に呼出専用スレッド20を必
要とするか否か判定し、必要とする場合は呼出専用スレ
ッド20を使用して呼出し、必要としない場合はシング
ルスレッドプログラム18を直接呼出す。このためユー
ザスレッド16は、シングルスレッドプログラム18の
メソッドプロトタイプ又はメソッドに対応して読出専用
スレッドの使用の有無を記述した図1(B)の環境定義
テーブル22、又はユーザ指定に基づいて、呼出専用ス
レッドを必要とするか否か判定する。
【0030】これはマルチスレッドプログラムからシン
グルスレッドプログラムを呼ぶ場合に、偶然、問題が発
生しないシングルスレッドプログラムの場合があること
に対応している。この場合に呼出専用スレッドを使用す
ると、その分、処理が複雑になり実行性能が落ちる。そ
こで、問題が発生しないシングルスレッドプログラムの
場合には、呼出専用スレッドをバイパスしてシングルス
レッドプログラムを直接呼出し、実行性能を向上させ
る。
【0031】本発明は、複数のスレッドを並行して実行
可能なマルチスレッドプログラムからシングルスレッド
プログラムを呼出して実行するプログラム処理方法を提
供するものであり、マルチスレッドプログラムの特定の
1スレッドによりシングルスレッドプログラムを最初に
呼出して実行する際に、シングルスレッドブログラムを
呼出す唯一の呼出専用スレッドを生成し、生成後は呼出
専用スレッドを使用して前記シングルスレッドプログラ
ムを呼出すことを特徴とする。
【0032】また本発明は、複数のスレッドを並行して
実行可能なマルチスレッドプログラムからシングルスレ
ッドプログラムを呼出して実行するスレッド処理プログ
ラムを格納したコンピュータ可読の記録媒体を提供する
ものであり、マルチスレッド処理プログラムに、マルチ
スレッドプログラムの特定の1スレッドによりシングル
スレッドプログラムを最初に呼出して実行する際に生成
され、シングルスレッドブログラムを呼出す唯一の呼出
専用スレッドを設けたことを特徴とする。
【0033】
【発明の実施の形態】図2は、本発明によるマルチスレ
ッド処理装置の実施形態であり、遠隔メソッド呼出し
(RMI)を用いてサーバアプリケーションのマルチス
レッドプログラムを実行する場合を例にとっている。
【0034】図2において、マルチスレッドプログラム
として機能するRMIサーバアプリケーション10は、
プログラムの起動時にメインスレッドとして動作するル
ートスレッド14を形成し、クライアント12−1,1
2−2からのメソッド呼出しであるRMI呼出しを受け
付ける。
【0035】ルートスレッド14は、クライアント12
−1,12−2からRMI呼出しを受け付けるごとに例
えばスレッド16−1,16−2を生成し、スレッド1
6−1,16−2はそれぞれ並列に実行されることでマ
ルチスレッド動作を行う。
【0036】スレッド16−1,16−2は、既存の資
源として存在する動的ライブラリとしてのシングルスレ
ッドプログラム18を利用する場合がある。既存資産と
してのシングルスレッドプログラム18は、例えばCO
BOLプログラム等で記述されたデータベース等であ
り、RMIサーバアプリケーション10で実現されるマ
ルチスレッドプログラムのプロセスに対し、別プロセス
として存在している。
【0037】本発明にあっては、スレッド16−1,1
6−2でシングルスレッドプログラム18を呼び出す場
合に、原則として呼出専用スレッド20を生成する。こ
こでスレッド16−1,16−2の2つが並列に実行さ
れている場合、呼出専用スレッド20を生成するのは、
プログラムの実行順に従って最初にシングルスレッドプ
ログラム18を呼び出す方のスレッドである。
【0038】スレッド16−1または16−2により生
成された呼出専用スレッド20は、FIFO構成のイベ
ントキュー26を内蔵している。スレッド16−1,1
6−2でシングルスレッドプログラム18を呼び出そう
とする場合、各スレッドは同期イベントを生成し、呼出
スレッド20のイベントキュー26に投入する。このス
レッド16−1,16−2がシングルスレッドプログラ
ム18の呼出しのために生成する同期イベントはシン
グルスレッドプログラムを実行するために必要な関数名
や引数情報等の情報;動作対象とするメソッド(シン
グルスレッドプログラム)の識別情報を含むイベント;
を備える。
【0039】呼出専用スレッド20のイベントキュー2
6は、FIFO構成であることから、イベントキュー2
6にキューイングされている同期イベントを先頭から取
り出し、取り出した同期イベントに含まれる情報に基づ
いてシングルスレッドプログラム18を実行する。
【0040】シングルスレッドプログラム18の実行が
終了すると、呼出専用スレッド20に対し関数が復帰す
るので、この関数復帰を受けて呼出専用スレッド20は
同期イベントを投入したスレッド16−1または16−
2へのシングルスレッドプログラム18の実行終了を通
知する。
【0041】このように呼出専用スレッド20を生成
し、そのイベントキュー26にスレッド16−1,16
−2からシングルスレッドプログラム18の呼出しを行
った順に同期イベントを投入し、投入した順番に従って
シングルスレッドプログラム18を実行するため、シン
グルスレッドプログラム18の変数のアクセスが競合す
ることがない。
【0042】例えばスレッド16−1,16−2の順番
にシングルスレッドプログラム18の呼出しのための同
期イベントを呼出専用スレッド20に投入し、このとき
の関数48−1,48−2がシングルスレッドプログラ
ム18の静的変数50を利用していたとしても、呼出専
用スレッド20はスレッド16−1の同期イベントに基
づくシングルスレッドプログラム18の実行を終了した
後に、スレッド16−2から投入した同期イベントに基
づくシングルスレッドプログラム18の実行を行うこと
になる。
【0043】この結果、複数のスレッド16−1,16
−2がシングルスレッドプログラム18を呼び出してい
ても、その静的変数50に同時にアクセスするスレッド
は1つに限定されるため、資源の競合の問題は発生しな
い。
【0044】図3は、スレッド16−1,16−2の変
数48−1,48−2でシングルスレッドプログラム1
8の静的変数50をアクセスした場合の主記憶30のプ
ロセス領域32であり、プロセス領域32にはまずスレ
ッド16−1の対応領域34−1が確保され、f1(ar
gs)内で静的変数ptr にメモリ領域38を割り当て、静
的変数ptr に割り当てた領域にアクセスし、f1(arg
s)が復帰する前に領域38を開放する。
【0045】このようにしてスレッド16−1からの呼
出しによるシングルスレッドプログラム18が終了する
と、続いてスレッド16−2からの呼出しによるシング
ルスレッドプログラム18の実行でスレッド16−2の
対応領域38−2のf2(args)内で静的変数ptr にメ
モリ領域38を割り当て、静的変数ptr に割り当てた領
域38にアクセスし、f2(args)が復帰する前に領域
38を開放する。
【0046】したがって、スレッド16−1,16−2
によるシングルスレッドプログラム18の呼出しによる
静的変数50のアクセスは順番に行われるため、図14
に示したような従来の直接複数のスレッドからシングル
スレッドプログラムを呼び出して静的変数のアクセスで
競合する問題が起きることはない。
【0047】再び図2を参照するに、スレッド16−
1,16−2で呼び出す別プロセスのシングルスレッド
プログラム18の中には、複数のスレッドの呼出しで実
行させるマルチスレッド動作を行っても問題を起こさな
いものがある。このようにマルチスレッド動作で呼び出
しても問題が起きないシングルスレッドプログラムにつ
いては、呼出専用スレッド20を使用して呼び出すと、
その分アクセス性能が低下する。
【0048】そこで本発明にあっては、スレッド16−
1,16−2でシングルスレッドプログラム18を呼び
出す際に、シングルスレッドプログラム18がマルチス
レッド動作で問題が起きずに呼出専用スレッド20を必
要としないシングルスレッドプログラムか、マルチスレ
ッド動作で問題を起こし呼出専用スレッド20を必要と
するシングルスレッド動作しかできないシングルスレッ
ドプログラムであるかを判定し、シングルスレッド動作
を必要とする場合には呼出専用スレッド20により呼び
出し、マルチスレッド動作ができる場合には呼出専用ス
レッド20をバイパスして直接シングルスレッドプログ
ラム18を呼び出すようにする。
【0049】このようにスレッド16−1,16−2で
シングルスレッドプログラム18の呼出しに呼出専用ス
レッドを必要とするか否かの判定は ユーザ指定、 環境定義テーブルの参照 のいずれかとする。
【0050】ユーザ指定は、呼出対象とするシングルス
レッドプログラムがマルチスレッドによる呼出しを受け
ても問題ないことが予め判っている場合に行う。また環
境定義テーブル22には、動作対象とするシングルスレ
ッドプログラム18の識別情報に加えて呼出専用スレッ
ド20を必要とするか否かの情報が含ませておき、スレ
ッド16−1が環境定義テーブル22を参照すること
で、呼出そうとするシングルスレッドプログラム18を
環境定義テーブル22を参照することで、呼出専用スレ
ッド20を必要とするか否かが認識できる。
【0051】更に図2のRMIサーバアプリケーション
10にあっては、スレッド16−1または16−2でシ
ングルスレッドプログラム18を呼び出す際に生成した
呼出専用スレッド20をルートスレッド14に同期して
終了させるため、呼出専用スレッド20をルートスレッ
ド14のルートスレッドグループに属させている。
【0052】これは、呼出専用スレッド20をRMIサ
ーバアプリケーション10のマルチスレッドプログラム
の1プロセスにおいて別のプロセスのシングルスレッド
プログラム18を呼び出す唯一のスレッドとして発生し
ており、唯一のスレッドとして機能させるためにはルー
トスレッド14と同じスレッドグループに属するように
し、ルートスレッド14の終了時即ちメインプログラム
の終了時に呼出専用スレッド20が終了することを保証
する。
【0053】即ちルートスレッド14のグループに呼出
専用スレッド20を属させておくことで、ルートスレッ
ド14が終了する際に同じスレッドグループである呼出
専用スレッド20にも終了が通知され、これによって呼
出専用スレッドをルートスレッド14に同期して正しく
終了させることができる。
【0054】これに対し、もしスレッド16−1,16
−2の終了に同期して呼出専用スレッド20を終了させ
た場合には、終了後に新たにシングルスレッドプログラ
ム18を呼び出す際に別の呼出専用スレッド20が生成
されることとなり、複数の呼出専用スレッド20が存在
することで、シングルスレッドプログラム18を呼び出
すスレッドを唯ひとつに絞るという本発明の機能が果た
せなくなる。
【0055】したがって、呼出専用スレッド20は、ル
ートスレッド14のグループに属させておくことでRM
Iサーバアプリケーション10によるマルチスレッドプ
ログラムのプロセスに唯一のスレッドとして存在するよ
うにしている。
【0056】図4は、図2のRMIサーバアプリケーシ
ョン10に設けた環境定義テーブル22の説明図であ
る。図4において、環境定義テーブル22は、動作対象
メソッドとなるシングルスレッドプログラム18を識別
するためのライブラリ名52、メソッド名54、メソッ
ドプロトタイプ56で構成され、更に呼出専用スレッド
20を必要とするか否かを判別するためのモード58を
登録している。
【0057】ここでモード58は呼出専用スレッド20
を必要とするシングルモードと、呼出専用スレッド20
を必要とせずにバイパスするマルチモードが設定されて
いる。即ちシングルモードとは、唯一のスレッドによる
呼出しでシングルスレッドプログラム18を実行しなけ
れば問題を起こす場合であり、これに対しマルチモード
とは複数のスレッドの並列動作でシングルスレッドプロ
グラム18を呼び出しても問題を起こさない場合であ
る。
【0058】動作対象とするシングルスレッドプログラ
ム18を識別する情報は、ライブラリ名52、メソッド
名54及びメソッドプロトタイプ56であり、メソッド
プロトタイプ56は復帰値の型と引数の型の並びを表わ
しており、図示のようにアルファベットの並びで表現す
ることができる。このようにメソッドプロトタイプ56
がアルファベットの並びで表現できるのは、Javaの
JNI(Java NativeInterface)で使用されているもの
である。
【0059】即ち、JNIでは、メソッドの任意のプロ
トタイプを文字列で表現でき、例えば、 int : 'i' pointer : 'p' structure : 's' というように文字を割当ることができる。
【0060】また動作対象となるメソッド、即ちシング
ルスレッドプログラム18を識別するための情報として
メソッド名54以外にメソッドプロトタイプ56を持つ
理由は、同一ライブラリの中にプロトタイプが異なる同
じ名前のメソッドの存在を許しているシステムがあるた
めである。
【0061】環境定義テーブル22を作成する場合、利
用者は、予め与えられた別の情報から、そのメソッドが
マルチスレッド・セーフか否か判断した上で、環境情報
テーブル22のモードを指定する。マルチスレッド・セ
ーフか否かの判断は、ソースコードの解析結果、マルチ
スレッドでの動作を保証しているライブラリのメソッド
等に基づいて行う。
【0062】この図4の環境定義テーブル22は、図2
のスレッド16−1または16−2がシングルスレッド
プログラム18を呼び出す際に前もって参照され、呼出
対象メソッド名に対応するモードから、もしシングルモ
ードであれば呼出専用スレッド20を使用してシングル
スレッドプログラム18を呼び出し、マルチモードであ
れば直接シングルスレッドプログラム18を呼び出す。
【0063】尚、環境定義テーブル22の識別情報とし
ては、少なくともメソッドプロトタイプ56又はメソッ
ド名54でよい。
【0064】図5(A)は図2の呼出専用スレッド20
に設けられたイベントキュー26の格納状態であり、呼
出専用スレッド20が参照するシングルスレッドプログ
ラム18を動作対象とした識別情報テーブルとして機能
する。
【0065】図5(A)のイベントキュー28には、呼
出メソッドを特定する情報として、ライブラリ名52、
メソッド名54、メソッドプロトタイプ56及び復帰値
・引数(配列)60が格納されている。更に呼出元のス
レッドを特定するための呼出元スレッドID62を設け
ている。この呼出元スレッドID62は、Javaの場
合はスレッドの参照(ポインタ)を使用する。
【0066】復帰値・引数(配列)60には、シングル
スレッドプログラム18を実行するのに必要な復帰値及
び引数の値を設定する。この復帰値及び引数の値はJa
vaではオブジェクトの配列の形式で設定する。また復
帰値及び引数の値は直値の場合と構造体等へのポインタ
の場合があるが、どの要素が直値でどの要素が構造体等
へのポインタであるかはメソッドプロトタイプ56から
判断する。
【0067】更に呼出専用スレッド20の呼出しで実行
されたシングルスレッドプログラム18の実行結果とし
て復帰値や引数の領域に値が帰ってきた場合、復帰値・
引数(配列)60の領域に値を設定し、呼出元スレッド
IDで指定されるスレッドに値を返してマルチスレッド
プログラム18の終了を通知する。
【0068】この図5(A)のイベントキュー28にあ
っては、スレッドにより投入された3つの同期イベント
28−1,28−2,28−3が投入順に従って上から
下に配列された場合である。
【0069】このため、図2のスレッド16−1,16
−2から呼出専用スレッド20のイベントキュー26に
投入される同期イベント28は、図5(B)に取り出し
て示すように、ライブラリ名52、メソッド名54、メ
ソッドプロトタイプ56、復帰値・引数(配列)60及
び呼出元スレッドID62を1レコードとした情報であ
る。
【0070】このうち、呼出メソッドを特定するための
情報であるライブラリ名52、メソッド名54及びメソ
ッドプロトタイプ56は、図4に示した環境定義テーブ
ル22の参照で取得することができ、復帰値・引数(配
列)60及び呼出元スレッドID62はシングルスレッ
ドプログラム18を呼び出そうとするスレッド16−
1,16−2自身で生成されるパラメータである。尚、
同期イベント28は、少なくともメソッド名54と呼出
元メソッド名62を格納するものであればよい。
【0071】図6は、図2の呼出専用スレッド20のイ
ベントキュー26に投入された同期イベントの他の格納
状態であり、この実施形態にあっては図5の同期イベン
トに更に動作対象とするメソッドのグループに関する情
報と優先度を設けたことを特徴とする。
【0072】図6(A)は、イベントキュー28に4つ
の同期イベント28−1〜28−4が投入された状態で
あり、ライブラリ名52、メソッド名54、メソッドプ
ロトタイプ56、復帰値・引数(配列)60、呼出元ス
レッドID62に加えて、グループ64と優先度66を
設けている。
【0073】ここで順番に投入した4つの同期イベント
28−1〜28−4のうち、2番目と4番目の同期イベ
ント28−2,28−4はグループが「UI」と同じで
あり、優先度がそれぞれ異なる「−1」と「+1」を設
定している。
【0074】このようにグループ64と優先度66を設
けた同期イベント28−2,28−4については、同期
イベント28−4が一番下に新たにキューイングされた
タイミングで、同一グループの同期イベント28−2が
あることから両者の優先度で比較し、図6(B)のよう
に優先度の高い同期イベント28−4を上から2番目の
位置に置き換え、優先度の低い同期イベント28−2を
4番目の位置に並べ換える。
【0075】これによって呼出対象が同じグループのメ
ソッド、即ちシングルスレッドプログラムであった場合
には、優先度の高い同期イベントをイベントキューの高
い位置に並び換えることで、優先度が高いほどグループ
内で優先的にシングルスレッドプログラムを呼び出して
実行することができるように制御できる。
【0076】次に図2のRMIサーバアプリケーション
10によるマルチスレッド処理を図7乃至図10のフロ
ーチャートを参照して説明する。
【0077】図7は、RMIサーバアプリケーション1
0におけるマルチスレッド処理の全体的な処理動作のフ
ローチャートである。まずRMIサーバアプリケーショ
ン10として提供されるマルチスレッドプログラムを起
動すると、ステップS1でルートスレッド14が生成さ
れる。
【0078】ルートスレッド14に対しては、ステップ
S2でクライアント12−1,12−2より遠隔メソッ
ド起動RMIによるメソッド呼出しが行われ、このメソ
ッド呼出しを受けると、ステップS3でユーザスレッド
として例えばスレッド16−1を生成する。続いてステ
ップS4で現在生成しているスレッドを並列的に実行す
る処理を行い、ステップS5でルートメソッドの終了が
あるまで、ステップS2からの処理を繰り返す。
【0079】このためルートスレッド14は、クライア
ント12−1,12−2からRMI呼出しによるメソッ
ド呼出しを受けるごとにスレッドを生成して処理を並列
的に実行する。ステップS5でルートスレッドの終了が
判別されると、ステップS6に進み、ルートスレッド自
身の処理を終了すると同時に、ルートスレッドグループ
に属する他のスレッドに終了を通知してマルチスレッド
処理を終了させる。
【0080】図8は、図7のステップS3で生成したユ
ーザスレッドの生成実行処理のフローチャートである。
まずステップS1でルートスレッド14がRMI呼出し
によるメソッド呼出しを受けてユーザスレッド例えばユ
ーザスレッド16−1を生成し、ステップS2で生成し
たユーザスレッド16−1を含む複数のスレッドの処理
を並列的に行う。
【0081】次にステップS3でユーザスレッド16−
1においてシングルスレッドプログラム18の呼出実行
か否かチェックする。シングルスレッドプログラム18
の呼出実行であれば、ステップS4に進み、環境定義テ
ーブル22を参照し、動作対象とするスレッド名からそ
のモードを読み取ることで、シングルモード即ちシング
ルスレッド動作を必要とするか否かチェックする。
【0082】環境定義テーブル22の参照でシングルス
レッド動作、即ち呼出専用スレッドを必要とする場合に
は、ステップS5に進み、既に呼出専用スレッド20が
生成されているか否かチェックする。もし呼出専用スレ
ッド20が生成されていなければ、ステップS6で呼出
専用スレッド20を生成する。
【0083】次にステップS7でスレッド16−1は同
期イベントを生成し、呼出専用スレッド20のイベント
キュー26に投入し、ステップS8で同期イベント終了
待ちとなる。ステップS8において、シングルスレッド
プログラム18の実行終了で関数や引数の復帰に伴い同
期イベントの終了を受けると、ステップS9に進み、ス
レッド終了の有無をチェックし、スレッド終了でなけれ
ば再びステップS2に戻り、スレッド16−1の処理を
続行する。
【0084】一方、ステップS4で外部のシングルスレ
ッドプログラム18の呼出実行のために環境定義テーブ
ル22を参照し、シングルスレッド動作を必要としない
即ち呼出専用スレッドを必要としないマルチモードであ
った場合には、ステップS5〜S8の処理を行わず、ス
テップS10にバイパスし、呼出専用スレッド20を使
用せずに直接外部のシングルスレッドプログラムを呼び
出して実行し、ステップS11で終了通知を待って、再
びステップS2の処理に戻る。
【0085】この図8のユーザスレッド生成実行処理
は、図2に示したスレッド16−1,16−2のそれぞ
れの処理として並列的に実行されている。
【0086】図9は、図8のステップS6で行われる呼
出専用スレッド20の生成処理のフローチャートであ
る。この呼出専用スレッド20の生成処理は、ステップ
S1で生成元のスレッド例えば最初にシングルスレッド
プログラム18を呼び出そうとしたスレッド16−1を
現在のスレッドとして取得し、ステップS2で現在のス
レッド16−1のスレッドグループを取得する。
【0087】次にステップS3で現在のスレッドグルー
プに親スレッドグループがあるか否かチェックする。図
2の場合には、スレッド16−1に対しルートスレッド
14の親スレッドグループがあることから、ステップS
4に進み、親スレッドグループを現在のスレッドグルー
プとする。
【0088】そして再びステップS3に戻り、現在のス
レッドグループとしたルートスレッドグループに親スレ
ッドグループがあるか否かチェックする。この場合には
親スレッドグループがないことから、ステップS5に進
み、呼出専用スレッド20を生成し、生成した呼出専用
スレッドを現在のスレッドグループ即ち、ステップS
3,S4の処理で特定された最上位の親スレッドグルー
プ即ちルートスレッドグループに追加する。この図9の
処理によって生成された呼出専用スレッド20は、ルー
トスレッド14として動作することになる。
【0089】図10は、図2でシングルスレッドプログ
ラム18を呼出すために唯一生成した呼出専用スレッド
20の処理動作のフローチャートである。この呼出専用
スレッド20の処理にあっては、まずステップS1でス
レッド16−1,16−2からのシングルスレッドプロ
グラム18の呼出しを行うための同期イベントの受領を
チェックしており、同期イベントを受領すると、ステッ
プS2でイベントキュー26に受領順に同期イベントを
格納する。
【0090】次にステップS3でイベントキュー26が
空か否かチェックしており、空でなければステップS4
に進み、イベントキュー26の先頭の同期イベントを取
り出し、ステップS5で同期イベントの情報から外部の
シングルスレッドプログラム18を呼び出して実行す
る。
【0091】シングルスレッドプログラム18の処理が
終了すると関数や引数が復帰してくることから、これに
よってステップS6で呼出プログラムの終了を認識し、
ステップS7で呼出元メソッドに同期イベントの終了を
通知する。この同期イベントの終了にはシングルスレッ
ドプログラム18の終了で復帰した関数や引数の値が含
まれている。
【0092】更にステップS8でルートスレッドからの
終了通知をチェックしており、呼出専用スレッド20は
図9の生成処理によってルートスレッド14のグループ
に属していることから、ルートスレッドからの終了通知
を受けて呼出専用スレッド20の処理を終了する。
【0093】図11は、本発明によるマルチスレッド処
理装置の他の実施形態であり、クライアントのスレッド
によってサーバからダウンロードしたアプレットが呼出
専用スレッドを使用してシングルスレッドプログラムを
呼び出す実施形態を例にとっている。
【0094】図11において、クライアント42にはブ
ラウザ44が設けられており、メソッド呼出しによって
スレッド16−1,16−2が生成される。スレッド1
6−1,16−2はWWWサーバ40をアクセスし、ア
プレット46−1,46−2をそれぞれダウンロードし
て並列的に実行する。
【0095】このようにブラウザ44上で2つ以上のア
プレット46−1,46−2が実行されている場合、そ
れぞれのアプレット46−1,46−2が同じシングル
スレッドプログラム18を呼び出す場合がある。このよ
うな場合、本発明にあっては、例えば最初にアプレット
46−1がシングルスレッドプログラム18を呼び出そ
うとした場合に呼出専用スレッド20を生成し、シング
ルスレッドプログラム18を呼び出すための同期イベン
トを生成してイベントキュー26に投入する。
【0096】呼出専用スレッド20はイベントキュー2
6から同期イベントを取り出し、同期イベントに基づい
てシングルスレッドプログラム18を実行し、実行終了
を待って次の同期イベントをイベントキュー26から取
り出してシングルスレッドプログラム18を実行するこ
とになる。
【0097】このためアプレット46−1,46−2が
同じシングルスレッドプログラム18を呼び出しても、
アプレット46−1,46−2の呼出し順に従ってシン
グルスレッドプログラム18が実行され、複数のアプレ
ットにより同じシングルスレッドプログラム18のアク
セスが競合することは起きない。
【0098】この場合についてもアプレット46−1で
シングルスレッドプログラム18を呼び出す際に環境定
義テーブル22を参照し、図4のようにモード52がシ
ングルモードであれば呼出専用スレッド20を使用した
シングルスレッドプログラム18の呼出しを行い、これ
に対しマルチモードであれば呼出専用スレッド20を使
用せずにバイパスし、直接シングルスレッドプログラム
18を呼び出して実行するようになる。
【0099】また、呼出専用スレッド20に設けられた
イベントキュー26の内容は、図5のグループと優先度
を持たない場合あるいは図6のグループと優先度を設け
た場合のいずれの場合も同様に適用される。
【0100】図12は図11のブラウザ44におけるマ
ルチスレッド処理の全体的な処理動作のフローチャート
である。図12において、クライアント42のブラウザ
44を起動すると、ステップS1で図示しないルートス
レッドが生成される。この状態でメソッド呼出しをステ
ップS2で判別すると、ルートスレッドが例えば呼出し
ごとにスレッド16−1,16−2を生成する。
【0101】生成されたスレッド16−1,16−2
は、ステップS4でWWWサーバ40をアクセスしてア
プレット46−1,46−2をダウンロードする。そし
てブラウザ44上でステップS5のように複数のアプレ
ット46−1,46−2を並列に実行する。
【0102】このアプレット46−1,46−2の並列
実行において動的ライブラリとしてのシングルスレッド
プログラム18を呼び出す場合があり、この場合には呼
出専用スレッド20を生成し、そのイベントキュー26
に同期イベントを投入し、イベントキュー26からの同
期イベントの先入れ,先出しによる取出しでアプレット
46−1,46−2の呼出要求の順番にシングルスレッ
ドプログラム18を実行する。
【0103】続いてステップS6でブラウザ44の終了
をチェックしており、ブラウザ44が終了すると、ステ
ップS7でルートスレッドグループのスレッドに終了を
通知して一連の処理を終了する。このルートスレッドグ
ループにはブラウザ44の中で唯一存在している呼出専
用スレッド20も含まれており、ブラウザの終了に同期
して呼出専用スレッド20も終了することになる。
【0104】この場合のアプレット生成実行処理は、W
WWブラウザからダウンロードする以外は図8のユーザ
スレッド生成実行処理と同じであり、またアプレットで
生成する呼出専用スレッドの生成処理は図9のフローチ
ャートと同じであり、更に生成した呼出専用スレッドに
よるシングルスレッドプログラムの呼出処理は図10の
フローチャートと同じになる。
【0105】更に本発明はマルチスレッドプログラムを
格納したコンピュータ可読の記録媒体を提供するもので
あり、この記録媒体の実施形態としてはCD−ROMや
フロッピディスク等のリムーバブルな可搬型記録媒体、
回線によりプログラムを提供するプログラム提供者の記
憶装置、更にプログラムをインストールした処理装置の
RAMやハードディスク等のメモリ装置がある。また、
記録媒体によって提供されたマルチスレッド処理プログ
ラムは処理装置にローディングされ、その主メモリ上で
実行される。
【0106】尚、図2の実施形態にあっては、Java
の標準で付属している手法である遠隔メソッド起動RM
Iによる分散実行を例にとるものであったが、CORB
A(Common Object Request Broker Architecture )を
採用した一部のCORBAサーバの分散実行において
も、同様にマルチスレッドプログラムが別プロセスのシ
ングルスレッドプログラム18を呼び出す場合があるの
で、このCORBAサーバの分散実行についても本発明
の呼出専用スレッド20を生成して呼び出す手順をその
まま適用することができる。
【0107】また本発明は上記の実施形態に限定され
ず、その目的と利点を損なわない適宜の変形を含む。更
に本発明は上記実施形態に示した数値による限定は受け
ない。
【0108】
【発明の効果】以上説明してきたように本発明によれ
ば、マルチスレッドプログラムからシングルスレッドプ
ログラムを呼び出す際に別プロセスを生成する必要がな
いため、処理負担を低減し、実行性能を向上することが
できる。
【0109】また本発明にあっては、マルチスレッドプ
ログラムからシングルスレッドプログラムを呼び出す際
に、シングルスレッドプログラムをマルチスレッドプロ
グラムに作り直す必要がないため、プログラムの開発効
率を向上することができる。
【0110】また本発明にあっては、シングルスレッド
プログラムを呼び出す唯一の呼出専用スレッドをルート
スレッド(メインスレッド)と同じスレッドグループに
属するようにし、メインプログラムの終了時に呼出専用
スレッドの終了を保証することでマルチプログラムのプ
ロセスに複数の専用スレッドが存在することを防ぎ、唯
一の呼出専用スレッドを存在させることでシングルスレ
ッドプログラム18に対するアクセスを全てシングルス
レッド動作で行うことができる。
【0111】更に本発明にあっては、シングルスレッド
プログラムの中にはマルチスレッドで動作しても問題を
起こすことのないプログラムがあることから、呼出専用
スレッドを必要とするか否か判断し、必要のない場合に
は呼出専用スレッドをバイパスして直接シングルスレッ
ドプログラムを呼び出すことで、マルチスレッド動作に
よる呼出しで問題のないシングルスレッドプログラムを
呼び出す場合の実行性能を向上させることができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】遠隔メソッド呼出RMIを用いてサーバアプリ
ケーションのマルチスレッドプログラムを実行する本発
明の第1実施形態のブロック図
【図3】図2の呼出専用スレッドを使用してシングルス
レッドプログラムの静的変数をアクセスした場合の説明
【図4】図2のサーバアプリケーションで呼出専用スレ
ッドの必要性の有無の判定に使用する環境定義テーブル
の説明図
【図5】図2のスレッドがシングルスレッドプログラム
を呼出す際に使用する識別情報テーブルと呼出専用スレ
ッドに投入する同期イベントの説明図
【図6】呼出スレッドのイベントキューに投入された優
先度を設定した同期イベントの説明図
【図7】図2のサーバアプリケーションによるマルチス
レッド処理のフローチャート
【図8】図7におけるユーザスレッド生成実行処理の詳
細フローチャート
【図9】図8における呼出専用スレッドの生成処理の詳
細フローチャート
【図10】図8で生成した呼出専用スレッドの処理動作
のフローチャート
【図11】サーバからクライアントのブラウザにダウン
ロードしたアプレットが呼出専用スレッドを使用してシ
ングルスレッドプログラムを呼出す実施形態のブロック
【図12】図11のブラウザによるマルチスレッド処理
のフローチャート
【図13】遠隔メソッド呼出RMIを用いてサーバアプ
リケーションのマルチスレッドプログラムを実行する従
来例のブロック図
【図14】図13で2つのスレッドがシングルスレッド
プログラムの静的変数をアクセスした場合の説明図
【図15】サーバからクライアントのブラウザにダウン
ロードしたアプレットが専用スレッドを使用してシング
ルスレッドプログラムを呼出す従来例のブロック図
【符号の説明】
10:RMIサーバアプリケーション(マルチスレッド
プログラム) 12,12−1,12−2:クライント 14:ルートスレッド(メインスレッド) 16,16−1,16−2:スレッド(ユーザスレッ
ド) 18:シングルスレッドプログラム 20:呼出専用スレッド 22:環境定義テーブル 26:イベントキュー 28:同期イベント 30:主記憶 32:プロセス領域 34−1,34−2:スレッド対応領域 36:データ領域 38:静的関数割当領域 40:WWWサーバ 42:クライアント 44:ブラウザ 46−1,46−2:アプレット

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】複数のスレッドを並行して実行可能なマル
    チスレッドプログラムからシングルスレッドプログラム
    を呼出して実行するマルチスレッド処理装置に於いて、 前記マルチスレッドプログラムの特定の1スレッドによ
    り前記シングルスレッドプログラムを最初に呼出して実
    行する際に生成され、前記シングルスレッドブログラム
    を呼出す唯一の呼出専用スレッドを備えたことを特徴と
    するマルチスレッド処理装置。
  2. 【請求項2】請求項1記載のマルチスレッド処理装置に
    於いて、前記呼出専用スレッドは、前記マルチスレッド
    プログラムで生成された複数のスレッドから呼出された
    順に前記シングルスレッドプログラムを呼出すことを特
    徴とするマルチスレッド処理装置。
  3. 【請求項3】請求項2記載のマルチスレッド処理装置に
    於いて、前記呼出専用スレッドは、前記マルチスレッド
    プログラムのスレッドの呼出要求として投入される同期
    イベントを格納する先入れ先出し構成(FIFO構成)のイ
    ベントキューを備え、前記イベントキューから同期イベ
    ントを順番に取出して前記シングルスレッドプログラム
    を実行することを特徴とするマルチスレッド処理装置。
  4. 【請求項4】請求項1記載のマルチスレッド処理装置に
    於いて、前記呼出専用スレッドのイベントキューに投入
    される同期イベントは、呼出すシングルスレッドプログ
    ラムを特定するための情報として、少なくともメソッド
    名及び呼出元スレッドIDを格納したレコードであるこ
    とを特徴とするマルチスレッド処理装置。
  5. 【請求項5】請求項1記載のマルチスレッド処理装置に
    於いて、前記呼出専用スレッドは、前記マルチスレッド
    プログラムで生成した最上位スレッド(ルートスレッド
    又はメインスレッド)のグループに属すことで、前記最
    上位スレッドの終了に同期して終了することを特徴とす
    るマルチスレッド処理装置。
  6. 【請求項6】請求項1記載のマルチスレッド処理装置に
    於いて、前記マルチスレッドプログラムのスレッドは、
    前記シングルスレッドプログラムを呼出す際に前記呼出
    専用スレッドが必要か否か判定し、必要とする場合は前
    記呼出専用スレッドを使用して呼出し、必要としない場
    合は前記シングルスレッドプログラムを直接呼出すこと
    を特徴とするマルチスレッド処理装置。
  7. 【請求項7】請求項6記載のマルチスレッド処理装置に
    於いて、前記マルチスレッドプログラムのスレッドは、
    前記シングルメソッドプログラムのメソッドプロトタイ
    プ又はメソッドに対応して前記読出専用スレッドの必要
    の有無を記述した環境定義テーブル、又はユーザ指定に
    基づいて、前記呼出専用スレッドが必要か否かを判定す
    ることを特徴とするマルチスレッド処理装置。
  8. 【請求項8】複数のスレッドを並行して実行可能なマル
    チスレッドプログラムからシングルスレッドプログラム
    を呼出して実行するマルチスレッド処理方法に於いて、 前記マルチスレッドプログラムの特定の1スレッドによ
    り前記シングルスレッドプログラムを最初に呼出して実
    行する際に、前記シングルスレッドブログラムを呼出す
    唯一の呼出専用スレッドを生成し、生成後は前記呼出専
    用スレッドを使用して前記シングルスレッドプログラム
    を呼出すことを特徴とするマルチメソッド処理方法。
  9. 【請求項9】複数のスレッドを並行して実行可能なマル
    チスレッドプログラムからシングルスレッドプログラム
    を呼出して実行するマルチスレッド処理プログラムを格
    納したコンピュータ可読の記録媒体に於いて、 前記マルチスレッド処理プログラムに、前記マルチスレ
    ッドプログラムの特定の1スレッドにより前記シングル
    スレッドプログラムを最初に呼出して実行する際に生成
    され、前記シングルスレッドブログラムを呼出す唯一の
    呼出専用スレッドを設けたことを特徴とするコンピュー
    タ可読の記録媒体。
JP22830899A 1999-08-12 1999-08-12 マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体 Expired - Fee Related JP3807588B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP22830899A JP3807588B2 (ja) 1999-08-12 1999-08-12 マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体
US09/468,490 US6857122B1 (en) 1999-08-12 1999-12-20 Multi-thread processing apparatus, processing method and record medium having multi-thread processing program stored thereon

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22830899A JP3807588B2 (ja) 1999-08-12 1999-08-12 マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体

Publications (2)

Publication Number Publication Date
JP2001051860A true JP2001051860A (ja) 2001-02-23
JP3807588B2 JP3807588B2 (ja) 2006-08-09

Family

ID=16874416

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22830899A Expired - Fee Related JP3807588B2 (ja) 1999-08-12 1999-08-12 マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体

Country Status (2)

Country Link
US (1) US6857122B1 (ja)
JP (1) JP3807588B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362564A (ja) * 2003-05-30 2004-12-24 Sharp Corp 統一イベント通知およびコンシューマ−プロデューサメモリ演算による仮想プロセッサ方法および装置
JP2008027344A (ja) * 2006-07-25 2008-02-07 Nec Access Technica Ltd オブジェクト間の非同期メッセージ管理方式および非同期メッセージ管理方法
JP2017045304A (ja) * 2015-08-27 2017-03-02 コニカミノルタ株式会社 画像形成装置及び画像形成装置の制御プログラム
CN116627549A (zh) * 2023-05-30 2023-08-22 云海链控股股份有限公司 Sgx多线程下通用的函数调用方法、装置、设备及介质

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2343437A1 (en) * 2001-04-06 2002-10-06 Ibm Canada Limited-Ibm Canada Limitee Method and system for cross platform, parallel processing
US7299471B2 (en) * 2002-04-17 2007-11-20 International Business Machines Corporation Common thread server
US7076616B2 (en) * 2003-03-24 2006-07-11 Sony Corporation Application pre-launch to reduce user interface latency
US8376855B2 (en) 2004-06-28 2013-02-19 Winview, Inc. Methods and apparatus for distributed gaming over a mobile device
US8870639B2 (en) 2004-06-28 2014-10-28 Winview, Inc. Methods and apparatus for distributed gaming over a mobile device
US10226698B1 (en) 2004-07-14 2019-03-12 Winview, Inc. Game of skill played by remote participants utilizing wireless devices in connection with a common game event
US7921365B2 (en) 2005-02-15 2011-04-05 Microsoft Corporation System and method for browsing tabbed-heterogeneous windows
US10721543B2 (en) 2005-06-20 2020-07-21 Winview, Inc. Method of and system for managing client resources and assets for activities on computing devices
JP2008547122A (ja) 2005-06-20 2008-12-25 エアプレイ ネットワーク インコーポレイテッド サービス提供方法、データ受信方法、データ提供システム、クライアント装置及びサーバ装置
US9919210B2 (en) 2005-10-03 2018-03-20 Winview, Inc. Synchronized gaming and programming
US8705195B2 (en) 2006-04-12 2014-04-22 Winview, Inc. Synchronized gaming and programming
US8149530B1 (en) 2006-04-12 2012-04-03 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US9511287B2 (en) 2005-10-03 2016-12-06 Winview, Inc. Cellular phone games based upon television archives
US20070088680A1 (en) * 2005-10-14 2007-04-19 Microsoft Corporation Simultaneously spawning multiple searches across multiple providers
US8002618B1 (en) 2006-01-10 2011-08-23 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US10556183B2 (en) 2006-01-10 2020-02-11 Winview, Inc. Method of and system for conducting multiple contest of skill with a single performance
US9056251B2 (en) 2006-01-10 2015-06-16 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US11082746B2 (en) 2006-04-12 2021-08-03 Winview, Inc. Synchronized gaming and programming
US8813112B1 (en) 2007-10-23 2014-08-19 Winview, Inc. Method of and apparatus for utilizing SMS while running an application on a mobile device controlling a viewer's participation with a broadcast
CN101442458B (zh) * 2007-11-23 2011-03-23 深圳富泰宏精密工业有限公司 序列式数据发送系统及方法
US8677018B2 (en) * 2008-08-25 2014-03-18 Google Inc. Parallel, side-effect based DNS pre-caching
US9716918B1 (en) 2008-11-10 2017-07-25 Winview, Inc. Interactive advertising system
US11551529B2 (en) 2016-07-20 2023-01-10 Winview, Inc. Method of generating separate contests of skill or chance from two independent events
US11308765B2 (en) 2018-10-08 2022-04-19 Winview, Inc. Method and systems for reducing risk in setting odds for single fixed in-play propositions utilizing real time input
CN112988365B (zh) * 2021-05-21 2021-09-14 北京国科环宇科技股份有限公司 一种线程管理方法、装置、设备及介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
CA2061117C (en) * 1991-12-02 1998-09-29 Neta J. Amit Apparatus and method for distributed program stack
JPH1049381A (ja) * 1996-07-04 1998-02-20 Internatl Business Mach Corp <Ibm> 複数のデータ処理要求の処理方法及び処理システム、プログラムの実行方法及びシステム
US6081906A (en) * 1997-11-21 2000-06-27 Fuji Xerox Co., Ltd. Multi-thread processing with queuing and recovery
US6493740B1 (en) * 1998-06-16 2002-12-10 Oracle Corporation Methods and apparatus for multi-thread processing utilizing a single-context architecture
US6493433B2 (en) * 1998-07-07 2002-12-10 Mci Communications Corporation Multi-threaded database system for an interactive voice response platform

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362564A (ja) * 2003-05-30 2004-12-24 Sharp Corp 統一イベント通知およびコンシューマ−プロデューサメモリ演算による仮想プロセッサ方法および装置
US8087034B2 (en) 2003-05-30 2011-12-27 Steven J. Frank Virtual processor methods and apparatus with unified event notification and consumer-produced memory operations
US8271997B2 (en) 2003-05-30 2012-09-18 Steven J. Frank General purpose embedded processor
US8621487B2 (en) 2003-05-30 2013-12-31 Steven J. Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
JP2008027344A (ja) * 2006-07-25 2008-02-07 Nec Access Technica Ltd オブジェクト間の非同期メッセージ管理方式および非同期メッセージ管理方法
JP2017045304A (ja) * 2015-08-27 2017-03-02 コニカミノルタ株式会社 画像形成装置及び画像形成装置の制御プログラム
US10523829B2 (en) 2015-08-27 2019-12-31 Konica Minolta, Inc. Image forming device and control program of image forming device
CN116627549A (zh) * 2023-05-30 2023-08-22 云海链控股股份有限公司 Sgx多线程下通用的函数调用方法、装置、设备及介质
CN116627549B (zh) * 2023-05-30 2024-03-26 云海链控股股份有限公司 Sgx多线程下通用的函数调用方法、装置、设备及介质

Also Published As

Publication number Publication date
US6857122B1 (en) 2005-02-15
JP3807588B2 (ja) 2006-08-09

Similar Documents

Publication Publication Date Title
JP2001051860A (ja) マルチスレッド処理装置及び処理方法並びにマルチスレッドプログラムを格納したコンピュータ可読の記録媒体
US6560626B1 (en) Thread interruption with minimal resource usage using an asynchronous procedure call
EP0767938B1 (en) Method for enforcing a hierarchical invocation structure in real time asynchronous software applications
US5958003A (en) Method and computer system for improving the response time of a computer system to a user request
US6401138B1 (en) Interface for patient context sharing and application switching
US6948172B1 (en) Preemptive multi-tasking with cooperative groups of tasks
US7280558B1 (en) Asynchronous pattern
US20040199927A1 (en) Enhanced runtime hosting
US20070226715A1 (en) Application server system and computer product
US6470346B2 (en) Remote computation framework
US20030014463A1 (en) Task management system
JPH0477938B2 (ja)
US20120042327A1 (en) Method and System for Event-Based Remote Procedure Call Implementation in a Distributed Computing System
JPH0283627A (ja) インタプリタ
JPH1049381A (ja) 複数のデータ処理要求の処理方法及び処理システム、プログラムの実行方法及びシステム
US20040138847A1 (en) Stress testing at low cost through parallel execution of unit tests
JP2008529113A (ja) アプリケーション・プロセスにおいて内部イベントをリプレイするための非侵入的方法およびこの方法を実装するシステム
JP2004288162A (ja) 同期タスクを利用したオペレーティングシステムアーキテクチャ
US6295602B1 (en) Event-driven serialization of access to shared resources
US6810503B1 (en) Method and apparatus for controlling the timing of the invocation of events within a computer runtime environment
US20040199571A1 (en) Serving concurrent TCP/IP connections of multiple virtual Internet users with a single thread
Finkelstein et al. Real time threads interface
US7191443B2 (en) Digital device, task management method and program therefor
RU2316043C2 (ru) Механизм и способ предоставления информации событий в системе доступа
US6874027B1 (en) Low-overhead threads in a high-concurrency system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20051108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060418

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060511

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090526

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100526

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110526

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees