JP4003113B2 - 電話交換におけるマルチスレッドの制御方法 - Google Patents
電話交換におけるマルチスレッドの制御方法 Download PDFInfo
- Publication number
- JP4003113B2 JP4003113B2 JP2001344946A JP2001344946A JP4003113B2 JP 4003113 B2 JP4003113 B2 JP 4003113B2 JP 2001344946 A JP2001344946 A JP 2001344946A JP 2001344946 A JP2001344946 A JP 2001344946A JP 4003113 B2 JP4003113 B2 JP 4003113B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- area
- queue
- messages
- storage area
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Exchange Systems With Centralized Control (AREA)
Description
【発明の属する技術分野】
本発明は、例えば電話交換器上での並列処理を行うマルチスレッドの制御方法に関するものである。
【0002】
【従来の技術】
UNIX(登録商標)上でのマルチタスク処理は複数のプロセスにより実現していた。このため、マルチタスクを行う際の排他制御はIPCセマフォを使用してデータの整合性等を保証していたが、近年、マルチスレッドによるマルチタスク処理技術の発展により、UNIX(登録商標)上でのマルチタスク処理はスレッドを使用する方向となってきた。このため、UNIX(登録商標)上での電話の交換処理においてもマルチスレッドを用いた排他制御の実装が不可欠となっている。
【0003】
従来、マルチスレッドを用いた排他制御を行う場合は、スレッド毎に排他を保持し、処理とスレッドを1対1で対応させてスレッド毎にFIFOのメッセージキューを作成し、このメッセージキュー経由でスレッドに通知することにより排他制御が行われていた。
【0004】
例えば図4に示すように、予め生成された親レッド1に発呼要求が受信されると、親スレッド1は、その発呼に対応する子スレッド2を生成し、発呼があった旨を通知する。そして、メッセージが受信されたときはその子スレッド2にメッセージを通知し、メッセージに応じた処理を実行させる。回線の切断要求が受信されたときは、その旨を子スレッド2に通知して解放し、再利用可能な状態にする。
【0005】
【発明が解決しようとする課題】
しかしながら、前述した従来のマルチスレッドの制御方法では、発呼時に子スレッド2を生成するようにしているため、子スレッド2の処理生成に時間がかかり、処理能力に大きく影響を与えていた。また、発呼毎に子スレッド2を割り当てるため、処理中でない子スレッド2が多数存在し、リソースに無駄が発生するという課題があった。
【0006】
【課題を解決するための手段】
本発明の電話交換におけるマルチスレッドの制御方法は、電話加入者からのアクセスに対する電話交換のマルチスレッドの制御方法において、予め定められた複数の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番号と同一のキュー領域にキューイングされた発呼要求と複数のメッセージを読み込ませて処理を実行させるようにしたので、スレッド側では排他処理を意識せずに受信の発呼要求と複数のメッセージを順次処理することが可能になり、これにより開発時の規模や期間の削減に繋がるという効果がある。
【図面の簡単な説明】
【図1】マルチスレッド制御方法の概要を示すブロック図である。
【図2】マルチスレッドの制御を説明するための動作説明図である。
【図3】図2に続く動作説明図である。
【図4】従来のマルチスレッドの制御を説明するための動作説明図である。
【符号の説明】
11 親スレッド
12 スレッドキュー
13 子スレッド
14 排他キュー
14a メッセージキュー領域
14b 記録判別領域
Claims (3)
- 電話加入者からのアクセスに対する電話交換のマルチスレッドの制御方法において、
予め定められた複数のID番号毎に発呼要求と複数のメッセージがキューイング可能なキュー領域を有する第1の記憶領域、前記ID番号がキューイングされる第2の記憶領域、及び所定数のスレッドをメモリ上に生成するステップと、
発呼要求と複数のメッセージが受信されたときに前記第1の記憶領域にアクセスして、空きのキュー領域を検索し、この検索により空きのキュー領域を確認したときは、そのキュー領域のID番号を読み込むと共に、そのID番号のキュー領域に前記発呼要求と複数のメッセージをキューイングするステップと、
ID番号を取得した際に、前記所定数のスレッドの中から待機中のスレッドが存在するかどうかを検索し、この検索により待機中のスレッドの存在を確認したときは、取得したID番号を前記第2の記憶領域にキューイングするステップとを有し、
前記第2の記憶領域に前記ID番号がキューイングされたとき、待機中のスレッドのうち先頭のスレッドから、そのID番号を取り出して前記第1の記憶領域にアクセスし、同一ID番号のキュー領域にキューイングされた前記発呼要求と複数のメッセージを読み込み、その複数のメッセージに基づく処理を実行させるようにしたことを特徴とする電話交換におけるマルチスレッドの制御方法。 - スレッドから処理終了の通知を受けたとき前記第1の記憶領域にアクセスして、そのスレッドが取り出したID番号と同一のID番号のキュー領域を開放することを特徴とする請求項1記載の電話交換におけるマルチスレッドの制御方法。
- 前記スレッドは、複数のメッセージに優先度が付けられているとき、優先順位の高いメッセージから順に実行することを特徴とする請求項1又は2記載の電話交換におけるマルチスレッドの制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001344946A JP4003113B2 (ja) | 2001-11-09 | 2001-11-09 | 電話交換におけるマルチスレッドの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001344946A JP4003113B2 (ja) | 2001-11-09 | 2001-11-09 | 電話交換におけるマルチスレッドの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003150391A JP2003150391A (ja) | 2003-05-23 |
JP4003113B2 true JP4003113B2 (ja) | 2007-11-07 |
Family
ID=19158388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001344946A Expired - Fee Related JP4003113B2 (ja) | 2001-11-09 | 2001-11-09 | 電話交換におけるマルチスレッドの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4003113B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110781017B (zh) * | 2019-11-01 | 2021-12-31 | 华云数据有限公司 | 一种消息处理方法、装置、设备及存储介质 |
-
2001
- 2001-11-09 JP JP2001344946A patent/JP4003113B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003150391A (ja) | 2003-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5274809A (en) | Task execution control method for a multiprocessor system with enhanced post/wait procedure | |
US5274823A (en) | Interrupt handling serialization for process level programming | |
US7853743B2 (en) | Processor and interrupt controlling method | |
US8756613B2 (en) | Scalable, parallel processing of messages while enforcing custom sequencing criteria | |
US5748959A (en) | Method of conducting asynchronous distributed collective operations | |
US7472214B2 (en) | Real-time embedded simple monitor method and computer product | |
JPH08171494A (ja) | マルチスレッドプロセッサ | |
JP2010140290A (ja) | マルチプロセッサシステム及びその排他制御の調停方法 | |
JP4003113B2 (ja) | 電話交換におけるマルチスレッドの制御方法 | |
JPH076043A (ja) | マルチスレッド・サーバ | |
JP3245500B2 (ja) | マルチプログラミングにおける事象管理方式 | |
EP0343646B1 (en) | Task execution control method for a multiprocessor system with enhanced post/wait procedure | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN115934656A (zh) | 信息处理方法、业务处理方法及装置 | |
JP2693916B2 (ja) | タスクスケジュール方法 | |
JPH09160790A (ja) | タスクスケジュール装置及びタスクスケジュール方法 | |
JPH05113887A (ja) | コンピユータシステム | |
CN113704297B (zh) | 业务处理请求的处理方法、模块及计算机可读存储介质 | |
JPH05113891A (ja) | 疑似セマフオア方式 | |
JP2000353100A (ja) | タスク処理システム | |
CN117453413A (zh) | 资源申请方法、装置、电子设备以及存储介质 | |
WO2019203512A1 (en) | Apparatus and method for deferral scheduling of tasks for operating system on multi-core processor | |
JP2607595B2 (ja) | キューイングテーブル検索方式 | |
JPH05108376A (ja) | コンピユータシステム | |
JPH08297580A (ja) | 入出力制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041029 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061206 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061212 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070209 |
|
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: 20070731 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070808 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4003113 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100831 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100831 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110831 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110831 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313115 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110831 Year of fee payment: 4 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120831 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130831 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |