JP2011248468A - 情報処理装置および情報処理方法 - Google Patents
情報処理装置および情報処理方法 Download PDFInfo
- Publication number
- JP2011248468A JP2011248468A JP2010118718A JP2010118718A JP2011248468A JP 2011248468 A JP2011248468 A JP 2011248468A JP 2010118718 A JP2010118718 A JP 2010118718A JP 2010118718 A JP2010118718 A JP 2010118718A JP 2011248468 A JP2011248468 A JP 2011248468A
- Authority
- JP
- Japan
- Prior art keywords
- data
- thread
- queue
- processing
- information
- 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
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
【解決手段】キューへデータをポップしたいスレッドはまず、アクセスしたキューにポップできるデータあるか否かを確認し、データがあればそれをポップする(S22のY、S24)。一方、データがなかった場合、スレッドは、自らのスレッドの識別情報を含むスレッド情報を同じキューにプッシュしたうえ、プロセッサを開放し待機状態へ移行する(S22のN、S28、S30)。後にデータをプッシュしたいスレッドは、キューにスレッド情報があれば、データを待っているスレッドがあると判断し、当該スレッド情報をポップしたうえデータを渡し、処理を再開させる。
【選択図】図8
Description
キューに格納された全てのデータが読み出し済みの場合など、あるスレッドがデータのポップを目的にキューにアクセスしてもデータが格納されていない場合がある。このような場合、一般的にはデータがキューに格納されるまでビジーループの状態となり、CPUリソースを無駄に消費する。本実施の形態では上述したノンブロッキングキューの説明における「要素」として、スレッドの処理に用いる「データ」と、スレッドの識別情報などの「スレッド情報」を一つのキューに混在させることにより、データの不在とスレッドの待ち状態とを直結させて処理を効率化する。
セマフォは、複数のスレッドで共通して利用する資源について、資源使用の同期をとる手法として広く用いられている。具体的には、利用可能な資源数を表すカウンタを共有メモリに用意し、資源を利用する場合は利用する数だけカウンタの値を減らし、資源を利用し終えて開放する場合はその数だけカウンタ値を増やす。例えばデバイスやメモリなどへのアクセス権を資源とした場合、同時にアクセスすることのできるスレッド数の上限をカウンタの初期値とし、カウンタの値を整数に限れば、アクセス数が上限に達したときにカウンタが0になり、それ以上のアクセスはできなくなる。
共有メモリに格納されたデータに対する、複数のスレッドによるアクセス制御の手法として、R(Reader)ロックおよびW(Writer)ロックがある。一般に、あるスレッドがデータを読み出すためにRロックを獲得している期間は、他のスレッドもRロックを獲得でき、複数のスレッドが同時に読み出しを行えるようにする。一方、あるスレッドがデータを書き込むためにWロックを獲得している期間は、他のスレッドは当該データへアクセスできないようにする。このようにすることでデータの整合性を保障する。
Claims (11)
- 個々のデータの行列からなるデータ用キューを格納するメモリと、
生成したデータを前記データ用キューに入れるデータ生成スレッドと、データを前記データ用キューから取り出すデータ消費スレッドと、の少なくともいずれかを処理する1つ以上のプロセッサと、を備え、
前記プロセッサは、
前記データ消費スレッドの処理において、前記データ用キューに取り出すべきデータが存在しない場合、当該データ用キューに、前記データ消費スレッドの識別情報を入れ、
前記データ生成スレッドの処理において、データを前記データ用キューに入れる際、当該データ用キューに前記データ消費スレッドの識別情報が入っていたら、当該データ消費スレッドが取得できるようにデータの格納先を変更することを特徴とする情報処理装置。 - 前記プロセッサは、前記データ消費スレッドの処理において前記データ用キューに当該データ消費スレッドの識別情報を入れた後、当該データ消費スレッドの処理を休止することを特徴とする請求項1に記載の情報処理装置。
- 前記プロセッサは、前記データ生成スレッドの処理において、前記データ用キューに前記データ消費スレッドの識別情報が入っていたら、休止していた当該データ消費スレッドの処理を再開する状態へと移行させることを特徴とする請求項2に記載の情報処理装置。
- 前記プロセッサは、
前記データ生成スレッドの処理における、データをデータ用キューに入れる操作および、前記データ消費スレッドの処理における、データをデータ用キューから取り出す操作を、あらかじめ定めたアトミック操作の単位で段階的に実施し、当該アトミック操作期間外では、前記データをデータ用キューに入れる操作または前記データをデータ用キューから取り出す操作の途中であっても、別のスレッド処理のためのデータ用キューに対する操作を妨げないことを特徴とする請求項1から3のいずれかに記載の情報処理装置。 - 前記プロセッサは、前記別のスレッドの処理において、
前記アトミック操作期間外であっても当該別のスレッド処理のためのデータ用キューに対する操作を行えない場合、前記データをデータ用キューに入れる操作または前記データをデータ用キューから取り出す操作の途中の状態であると判断し、当該途中の状態に応じて定められた操作を行うことにより、前記データをデータ用キューに入れる操作または前記データをデータ用キューから取り出す操作の少なくとも一部を進捗させることを特徴とする請求項4に記載の情報処理装置。 - 前記データ用キューは、各データを、行列における次のデータへのポインタで連結したリンクリストの構造を有し、各ポインタの更新をそれぞれアトミック操作とすることで、前記データをデータ用キューに入れる操作および前記データをデータ用キューから取り出す操作を段階的に実施することを特徴とする請求項4または5に記載の情報処理装置。
- 前記メモリは、前記データ用キューに入れるべき所定単位のデータを格納できる、空きの記憶領域の情報を表す空きパケットの行列からなるパケット用キューをさらに格納し、
前記プロセッサは、
前記データ生成スレッドの処理において、生成した所定単位のデータを前記データ用キューに入れる前に、前記パケット用キューから空きパケットの取り出しを試み、取り出すべき空きパケットが存在しない場合、当該パケット用キューに、前記データ生成スレッドの識別情報を入れ、
前記データ消費スレッドの処理において、所定単位のデータを前記データ用キューから取り出した後、不要になった空きパケットを前記パケット用キューに戻す際、当該パケット用キューに前記データ生成スレッドの識別情報が入っていたら、当該データ生成スレッドが取得できるように空きパケットの格納先を変更することを特徴とする請求項1から6のいずれかに記載の情報処理装置。 - 前記データ用キューは、各データを、行列における次のデータへのポインタで連結したリンクリストの構造を有し、
前記データ用キューには、前記取り出すべきデータおよび前記データ消費スレッドの識別情報のいずれも入っていない状態においてダミーのデータが格納され、
前記リンクリストにおける前記ダミーのデータへのポインタには、ダミーのデータを識別する情報が付加されていることを特徴とする請求項1から5のいずれかに記載の情報処理装置。 - 前記データ用キューは、各データを、行列における次のデータへのポインタで連結したリンクリストの構造を有し、
前記プロセッサは、
前記データ消費スレッドの処理において、前記データ用キューに前記データ消費スレッドの識別情報を入れた際、前記リンクリストにおける当該識別情報へのポインタに、識別情報が入っていることを示す情報を付加し、
前記データ生成スレッドの処理において、前記リンクリストのポインタを参照することにより、前記データ用キューに前記データ消費スレッドの識別情報が入っているか否かを判断することを特徴とする請求項1から5のいずれかに記載の情報処理装置。 - プロセッサによる第1のスレッドの処理において、メモリに格納されたキューからのデータ取り出しを試みた際、取り出すべきデータが存在しない場合、前記第1のスレッドの識別情報を当該キューに入れるステップと、
プロセッサによる第2のスレッドの処理において、前記キューへデータを入れる際、当該キューに前記第1のスレッドの識別情報が入っていたら、当該第1のスレッドにデータを渡すステップと、
を含むことを特徴とする情報処理方法。 - 第1のスレッドの処理において、メモリに格納されたキューからのデータ取り出しを試みた際、取り出すべきデータが存在しない場合、前記第1のスレッドの識別情報を当該キューに入れる機能と、
第2のスレッドの処理において、前記キューへデータを入れる際、当該キューに前記第1のスレッドの識別情報が入っていたら、当該第1のスレッドにデータを渡す機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010118718A JP5553685B2 (ja) | 2010-05-24 | 2010-05-24 | 情報処理装置および情報処理方法 |
CN2011800254549A CN102906706A (zh) | 2010-05-24 | 2011-03-23 | 信息处理装置及信息处理方法 |
PCT/JP2011/001715 WO2011148553A1 (ja) | 2010-05-24 | 2011-03-23 | 情報処理装置および情報処理方法 |
US13/611,561 US9658905B2 (en) | 2010-05-24 | 2012-09-12 | Information processing apparatus and method for carrying out multi-thread processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010118718A JP5553685B2 (ja) | 2010-05-24 | 2010-05-24 | 情報処理装置および情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011248468A true JP2011248468A (ja) | 2011-12-08 |
JP5553685B2 JP5553685B2 (ja) | 2014-07-16 |
Family
ID=45413682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010118718A Active JP5553685B2 (ja) | 2010-05-24 | 2010-05-24 | 情報処理装置および情報処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5553685B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016511904A (ja) * | 2013-02-28 | 2016-04-21 | オラクル・インターナショナル・コーポレイション | ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法 |
JP2017504887A (ja) * | 2013-12-18 | 2017-02-09 | オラクル・インターナショナル・コーポレイション | コンピューティング環境においてアダプティブビジーウェイトをサポートするためのシステムおよび方法 |
JP2021531553A (ja) * | 2018-07-02 | 2021-11-18 | ドライブネッツ リミテッド | マルチスレッドアプリケーションを実装するシステム |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60128537A (ja) * | 1983-12-14 | 1985-07-09 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 多重プログラミング・システム |
JPH02125339A (ja) * | 1988-11-04 | 1990-05-14 | Fujitsu Ltd | オペレーティングシステムにおけるプロセス消滅方式 |
JPH0365732A (ja) * | 1989-08-03 | 1991-03-20 | Matsushita Electric Ind Co Ltd | 資源管理方法 |
JPH07191944A (ja) * | 1991-09-11 | 1995-07-28 | Internatl Business Mach Corp <Ibm> | 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法 |
JP2000022724A (ja) * | 1998-07-01 | 2000-01-21 | Nec Corp | パケットスイッチシステム、これを含む集積回路、パケットスイッチ制御方法、パケットスイッチ制御プログラム記録媒体 |
JP2001084235A (ja) * | 1999-09-10 | 2001-03-30 | Nec Corp | ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体 |
JP2001346181A (ja) * | 2000-06-01 | 2001-12-14 | Matsushita Electric Ind Co Ltd | データ記憶部共有装置およびプログラム記録媒体 |
JP2008123516A (ja) * | 2006-11-13 | 2008-05-29 | Internatl Business Mach Corp <Ibm> | ロックフリー同時fifoキュー、キューを実装する方法、装置およびコンピュータ・プログラム |
-
2010
- 2010-05-24 JP JP2010118718A patent/JP5553685B2/ja active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60128537A (ja) * | 1983-12-14 | 1985-07-09 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 多重プログラミング・システム |
JPH02125339A (ja) * | 1988-11-04 | 1990-05-14 | Fujitsu Ltd | オペレーティングシステムにおけるプロセス消滅方式 |
JPH0365732A (ja) * | 1989-08-03 | 1991-03-20 | Matsushita Electric Ind Co Ltd | 資源管理方法 |
JPH07191944A (ja) * | 1991-09-11 | 1995-07-28 | Internatl Business Mach Corp <Ibm> | 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法 |
JP2000022724A (ja) * | 1998-07-01 | 2000-01-21 | Nec Corp | パケットスイッチシステム、これを含む集積回路、パケットスイッチ制御方法、パケットスイッチ制御プログラム記録媒体 |
JP2001084235A (ja) * | 1999-09-10 | 2001-03-30 | Nec Corp | ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体 |
JP2001346181A (ja) * | 2000-06-01 | 2001-12-14 | Matsushita Electric Ind Co Ltd | データ記憶部共有装置およびプログラム記録媒体 |
JP2008123516A (ja) * | 2006-11-13 | 2008-05-29 | Internatl Business Mach Corp <Ibm> | ロックフリー同時fifoキュー、キューを実装する方法、装置およびコンピュータ・プログラム |
Non-Patent Citations (4)
Title |
---|
CSND200301328012; 服部隆志: 'Javaの歩き方 第5回 スレッドプログラミングに挑戦する' JAVA PRESS 第21巻, 20011210, pp.126-135, (株)技術評論社 * |
CSNG199901741003; 三栄武、高橋直久: '適応型ロックを用いた並行プロセスのコスケジューリング機構の実現法' 情報処理学会研究報告 第91巻,第107号, 19911206, pp.1-8, 社団法人情報処理学会 * |
JPN6011020287; 服部隆志: 'Javaの歩き方 第5回 スレッドプログラミングに挑戦する' JAVA PRESS 第21巻, 20011210, pp.126-135, (株)技術評論社 * |
JPN6011020288; 三栄武、高橋直久: '適応型ロックを用いた並行プロセスのコスケジューリング機構の実現法' 情報処理学会研究報告 第91巻,第107号, 19911206, pp.1-8, 社団法人情報処理学会 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016511904A (ja) * | 2013-02-28 | 2016-04-21 | オラクル・インターナショナル・コーポレイション | ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法 |
JP2017504887A (ja) * | 2013-12-18 | 2017-02-09 | オラクル・インターナショナル・コーポレイション | コンピューティング環境においてアダプティブビジーウェイトをサポートするためのシステムおよび方法 |
JP2021531553A (ja) * | 2018-07-02 | 2021-11-18 | ドライブネッツ リミテッド | マルチスレッドアプリケーションを実装するシステム |
JP7301892B2 (ja) | 2018-07-02 | 2023-07-03 | ドライブネッツ リミテッド | マルチスレッドアプリケーションを実装するシステム |
Also Published As
Publication number | Publication date |
---|---|
JP5553685B2 (ja) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2011148553A1 (ja) | 情報処理装置および情報処理方法 | |
US4604694A (en) | Shared and exclusive access control | |
US9430388B2 (en) | Scheduler, multi-core processor system, and scheduling method | |
US8949549B2 (en) | Management of ownership control and data movement in shared-memory systems | |
US6668291B1 (en) | Non-blocking concurrent queues with direct node access by threads | |
US9268698B1 (en) | Method and system for maintaining context event logs without locking in virtual machine | |
CA2706737C (en) | A multi-reader, multi-writer lock-free ring buffer | |
US10380058B2 (en) | Processor core to coprocessor interface with FIFO semantics | |
KR101150661B1 (ko) | 정보 처리 장치 및 메모리 영역 관리 방법 | |
CN101208671A (zh) | 管理消息队列 | |
US10331500B2 (en) | Managing fairness for lock and unlock operations using operation prioritization | |
US8930596B2 (en) | Concurrent array-based queue | |
US10445096B2 (en) | Managing lock and unlock operations using traffic prioritization | |
CN113157467A (zh) | 一种多进程数据输出方法 | |
JP5553685B2 (ja) | 情報処理装置および情報処理方法 | |
JP5818824B2 (ja) | デュアル・モード・リーダ・ライタ・ロック | |
CN108958903B (zh) | 嵌入式多核中央处理器任务调度方法与装置 | |
JP2011248469A (ja) | 情報処理装置および情報処理方法 | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 | |
CN115951844A (zh) | 分布式文件系统的文件锁管理方法、设备及介质 | |
US6915516B1 (en) | Apparatus and method for process dispatching between individual processors of a multi-processor system | |
US11860785B2 (en) | Method and system for efficient communication and command system for deferred operation | |
WO2024217332A1 (zh) | 任务窃取方法、装置、芯片及计算机设备 | |
CN118260051A (zh) | 线程访问控制设备、方法与计算设备 | |
JPH0346033A (ja) | ジヨブ間データ転送制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130522 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131112 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140114 |
|
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: 20140513 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140527 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5553685 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |