米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 沖通信システム株式会社

発明の名称 マルチスレッドの制御方法
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2003−150391(P2003−150391A)
公開日 平成15年5月23日(2003.5.23)
出願番号 特願2001−344946(P2001−344946)
出願日 平成13年11月9日(2001.11.9)
代理人 【識別番号】100061273
【弁理士】
【氏名又は名称】佐々木 宗治 (外3名)
【テーマコード(参考)】
5B098
5K026
【Fターム(参考)】
5B098 AA09 GA05 GB13 GC15 
5K026 AA21 BB04 GG10
発明者 大貫 義夫 / 青塚 善和 / 為房 孝之
要約 課題
多数の待機中の子スレッドの防止とリソースに無駄のないマルチスレッド制御方法を提供する。

解決手段
発呼要求が受信されたとき排他キュー14にアクセスして複数の受信メッセージがキューイングされていないメッセージキュー領域14aを検索し、この検索によりキューイングされていないメッセージキュー領域14aを確認したときは、その領域14aの排他IDを読み込むと共に、排他IDのメッセージキュー領域14aに複数の受信メッセージをキューイングし、排他IDを取得した際に待機中の子スレッド13が存在するかどうかを検索し、この検索により待機中の子スレッド13の存在を確認したときは、取得した排他IDをスレッドキュー12にキューイングして、待機中の子スレッド13にその排他IDにキューイングされた複数の受信メッセージを読み込ませて処理を実行させる。
特許請求の範囲
【請求項1】 複数の処理を平行して行うマルチスレッドの制御方法であって、複数のID番号が付され、このID番号毎にイベントがキューイング可能なキュー領域を有する第1の記憶部、及び前記ID番号がキューイング可能な第2の記憶部をメモリに生成するステップと、イベントが受信されたときに前記第1の記憶部にアクセスして、イベントがキューイングされていないキュー領域を検索し、この検索によりイベントがキューイングされていないキュー領域を確認したときは、そのキュー領域のID番号を読み込むと共に、そのID番号のキュー領域に受信イベントをキューイングするステップと、ID番号を取得した際に、予め生成された複数のスレッドの中から待機中のスレッドが存在するかどうかを検索し、この検索により待機中のスレッドの存在を確認したときは、取得したID番号を前記第2の記憶部にキューイングするステップとを有し、待機中のスレッドは、前記第2の記憶部にID番号がキューイングされたとき、そのID番号を取り出して前記第1の記憶部にアクセスして、同一ID番号のキュー領域にキューイングされたイベントを読み込んで、これに基づいて処理を実行することを特徴とするマルチスレッドの制御方法。
【請求項2】 スレッドから処理終了の通知を受けたとき前記第1の記憶部にアクセスして、そのスレッドが取り出したID番号と同一のID番号のキュー領域を開放することを特徴とする請求項1記載のマルチスレッドの制御方法。
発明の詳細な説明
【0001】
【発明の属する技術分野】本発明は、例えば電話交換器上での並列処理を行うマルチスレッドの制御方法に関するものである。
【0002】
【従来の技術】UNIX(登録商標)上でのマルチタスク処理は複数のプロセスにより実現していた。このため、マルチタスクを行う際の排他制御はIPCセマフォを使用してデータの整合性等を保証していたが、近年、マルチスレッドによるマルチタスク処理技術の発展により、UNIX(登録商標)上でのマルチタスク処理はスレッドを使用する方向となってきた。このため、UNIX(登録商標)上での電話の交換処理においてもマルチスレッドを用いた排他制御の実装が不可欠となっている。
【0003】従来、マルチスレッドを用いた排他制御を行う場合は、スレッド毎に排他を保持し、処理とスレッドを1対1で対応させてスレッド毎にFIFOのメッセージキューを作成し、このメッセージキュー経由でスレッドに通知することにより排他制御が行われていた。
【0004】例えば図4に示すように、予め生成された親レッド1に発呼要求が受信されると、親スレッド1は、その発呼に対応する子スレッド2を生成し、発呼があった旨を通知する。そして、メッセージが受信されたときはその子スレッド2にメッセージを通知し、メッセージに応じた処理を実行させる。回線の切断要求が受信されたときは、その旨を子スレッド2に通知して解放し、再利用可能な状態にする。
【0005】
【発明が解決しようとする課題】しかしながら、前述した従来のマルチスレッドの制御方法では、発呼時に子スレッド2を生成するようにしているため、子スレッド2の処理生成に時間がかかり、処理能力に大きく影響を与えていた。また、発呼毎に子スレッド2を割り当てるため、処理中でない子スレッド2が多数存在し、リソースに無駄が発生するという課題があった。
【0006】
【課題を解決するための手段】本発明に係るマルチスレッド制御方法は、複数の処理を平行して行うマルチスレッドの制御方法であって、複数のID番号が付され、このID番号毎にイベントがキューイング可能なキュー領域を有する第1の記憶部、及びID番号がキューイング可能な第2の記憶部をメモリに生成するステップと、イベントが受信されたときに第1の記憶部にアクセスして、イベントがキューイングされていないキュー領域を検索し、この検索によりイベントがキューイングされていないキュー領域を確認したときは、そのキュー領域のID番号を読み込むと共に、そのID番号のキュー領域に受信イベントをキューイングするステップと、ID番号を取得した際に、予め生成された複数のスレッドの中から待機中のスレッドが存在するかどうかを検索し、この検索により待機中のスレッドの存在を確認したときは、取得したID番号を第2の記憶部にキューイングするステップとを有し、待機中のスレッドは、第2の記憶部にID番号がキューイングされたとき、そのID番号を取り出して第1の記憶部にアクセスして、同一ID番号のキュー領域にキューイングされたイベントを読み込んで、これに基づいて処理を実行する。
【0007】本発明においては、イベントが受信されると、第1の記憶部にアクセスしてイベントがキューイングされていないキュー領域を検索する。その第1の記憶部には、複数のID番号が付され、このID番号毎にイベントがキューイング可能なキュー領域が設けられている。検索によりイベントがキューイングされていないキュー領域を確認したときは、そのキュー領域のID番号を読み込むと共に、そのID番号のキュー領域に受信イベントをキューイングする。そして、ID番号を取得した際に、予め生成された複数のスレッドの中から待機中のスレッドが存在するかどうかを検索し、この検索により待機中のスレッドの存在を確認したときは、取得したID番号を第2の記憶部にキューイングする。一方、待機中のスレッドは、第2の記憶部にID番号がキューイングされたとき、そのID番号を取り出して第1の記憶部にアクセスして、同一ID番号のキュー領域にキューイングされたイベントを読み込み、これに基づいて処理を実行する。
【0008】
【発明の実施の形態】以下、本発明に係るマルチスレッドの制御方法について図1乃至図3に基づいて説明する。図1はマルチスレッド制御方法の概要を示すブロック図、図2及び図3はマルチスレッドの制御を説明するための動作説明図である。
【0009】本実施の形態のマルチスレッド制御方法は、例えば電話加入者からのアクセスによる電話交換器上での並列処理を実行させるために、汎用的なマルチスレッドプログラミングを使用している。例えばある呼に対してほぼ同時に複数のメッセージが受信された場合、その受信メッセージを複数のスレッドに割り当てることなく、一つのスレッドで順に処理させるようにしたものである。
【0010】このマルチスレッドの制御方法は、図1に示すようにプロセス起動時に、予め生成された親スレッド11によって、スレッドキュー12(第2の記憶部)、所定数の子スレッド13及び排他キュー14(第1の記憶部)がそれぞれメモリ(図示せず)上に生成される。スレッドキュー12は、後述する排他ID(ID番号)をFIFOの状態で書き込むためのものである。子スレッド13が生成される際、子スレッド13の実行待ち行列が作られる。
【0011】排他キュー14には、予め定められた排他ID(1〜n)が順に付与され、かつ、排他ID毎に複数の受信メッセージをキューイングするメッセージキュー領域14aが設けられている。また、そのメッセージキュー領域14aに受信メッセージをキューイングされているかどうかを判定させるために、その状態を記録する記録判別領域14bが設けられている。例えば、メッセージキュー領域14aに受信メッセージがキューイングされていないときは空として「0」が記録され、メッセージキュー領域14aが受信メッセージによって塞がっているときは「1」が記録される。
【0012】次に、図2及び図3を参照しながら動作を説明する。親スレッド11は、例えば発呼要求の受信を検知すると、図2(a)に示すように排他キュー14にアクセスして、まず最初の排他IDのメッセージキュー領域14aが空かどうかを記録判別領域14bを通じて判定する。その記録判別領域14bに「1」が記録されているときは、メッセージキュー領域14aが受信メッセージによって塞がっていると判断して次段の排他IDに進み、前記と同様にメッセージキュー領域14aが空かどうかを判定する。この動作は、記録判別領域14bに「0」が検索されるまで排他ID毎に順に行われる。
【0013】最初の排他IDの記録判別領域14bに「0」が記録されていたときは、その排他IDのメッセージキュー領域14aが空であると判断して、その排他IDを取得すると共に、受信された発呼要求をそのメッセージキュー領域14aにキューイングし、この発呼要求に対する複数の受信メッセージが続いて受信されたときはそのメッセージキュー領域14aに順にキューイングする。この時、記録判別領域14bに記録された「0」が「1」に書き替えられる。この動作は、発呼要求が受信される毎に行われる。
【0014】一方、実行待ち行列の中に待機中の子スレッド13が存在するかどうかを判定し、待機中の子スレッド13が存在するときは、図2(b)に示すように親スレッド11により取得された排他IDをその親スレッド11を通じてスレッドキュー12にキューイングさせる。この時、排他IDのキューイングをタイミングとして、実行待ち行列の先頭の子スレッド12が排他IDをスレッドキュー12から取り出す。
【0015】スレッドキュー12から排他IDを取り出した子スレッド13は、図2(c)に示すように排他キュー14にアクセスして、同一の排他IDのメッセージキュー領域14aにキューイングされた発呼要求及び複数の受信メッセージを取り出し、かつ、受信メッセージに応じて順に処理を実行する。なお、受信メッセージに優先度が付けられていた場合は、優先順位の高い受信メッセージを選択して処理を実行するようになっている。そして、受信メッセージによる処理が終了したときは、その旨を排他IDと共に親スレッド11に通知する。
【0016】この時、親スレッド11は、図3に示すように排他キュー14にアクセスして、通知を受けた排他IDと同一の排他IDの列に設けられた記録判別領域14b上の「1」を「0」に書き替えてこの排他IDのメッセージキュー領域14aを解放し、再利用可能な状態にする。
【0017】以上のように本実施の形態においては、発呼要求が受信されたとき、排他キュー14にアクセスして複数の受信メッセージがキューイングされていないメッセージキュー領域14aを検索し、この検索により複数の受信メッセージがキューイングされていないメッセージキュー領域14aを確認したときは、その領域14aの排他IDを読み込むと共に、その排他IDのメッセージキュー領域14aに複数の受信メッセージをキューイングし、そして、排他IDを取得した際に、予め生成された複数の子スレッド13の中から待機中の子スレッド13が存在するかどうかを検索し、この検索により待機中の子スレッド13の存在を確認したときは、取得した排他IDをスレッドキュー12にキューイングして、待機中の子スレッド13にその排他IDと同一のメッセージキュー領域14aにキューイングされた複数の受信メッセージを読み込ませて処理を実行させるようにしたので、子スレッド13側では排他処理を意識せずに複数の受信メッセージを順次処理することが可能になり、これにより開発時の規模や期間の削減に繋がるという効果がある。
【0018】また、前述したように発呼要求に対する複数のメッセージを処理する子スレッド13は一つであるため、各発呼処理機能で発呼処理に必要なデータを操作する場合に特別な処理、例えばセマフォによる排他制御を行わなくても複数の子スレッドからの同時アクセスによるデータ破壊を防止できる。また、タスク乗り換え時のリソースオーバヘッドが削減でき、処理速度の向上が見込める。
【0019】なお、本実施の形態は、例えばUNIX(登録商標)システム上では汎用的なマルチスレッドプログラミングを使用しているため、イベント処理が継続されるような交換処理以外のアプリケーションにも利用が可能である。
【0020】
【発明の効果】以上のように本発明によれば、イベントが受信されたとき、第1の記憶部にアクセスしてイベントがキューイングされていないキュー領域を検索し、この検索によりイベントがキューイングされていないキュー領域を確認したときは、そのキュー領域のID番号を読み込むと共に、そのID番号のキュー領域に受信イベントをキューイングし、そして、ID番号を取得した際に、予め生成された複数のスレッドの中から待機中のスレッドが存在するかどうかを検索し、この検索により待機中のスレッドの存在を確認したときは、取得したID番号を第2の記憶部にキューイングして、待機中のスレッドにそのID番号と同一のキュー領域にキューイングされたイベントを読み込ませて処理を実行させるようにしたので、スレッド側では排他処理を意識せずに受信イベントを順次処理することが可能になり、これにより開発時の規模や期間の削減に繋がるという効果がある。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013