JP5672311B2 - 同期処理方法 - Google Patents

同期処理方法 Download PDF

Info

Publication number
JP5672311B2
JP5672311B2 JP2012549538A JP2012549538A JP5672311B2 JP 5672311 B2 JP5672311 B2 JP 5672311B2 JP 2012549538 A JP2012549538 A JP 2012549538A JP 2012549538 A JP2012549538 A JP 2012549538A JP 5672311 B2 JP5672311 B2 JP 5672311B2
Authority
JP
Japan
Prior art keywords
thread
synchronization
processing
type
synchronization processing
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
Application number
JP2012549538A
Other languages
English (en)
Other versions
JPWO2012086041A1 (ja
Inventor
康志 栗原
康志 栗原
浩一郎 山下
浩一郎 山下
鈴木 貴久
貴久 鈴木
宏真 山内
宏真 山内
俊也 大友
俊也 大友
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
Publication of JPWO2012086041A1 publication Critical patent/JPWO2012086041A1/ja
Application granted granted Critical
Publication of JP5672311B2 publication Critical patent/JP5672311B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

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)

Description

本発明は、スレッド間の同期処理方法に関する。
従来から、1つのCPUに対して、複数のプログラムを動作させるマルチプログラミング技術が存在する。具体的には、OS(Operating System)は、CPU(Central Processing Unit)の処理時間を分割する機能を有し、分割された時間にスレッドを割り当てることにより、CPUが同時に複数のスレッドを動作することができる。ここで、スレッドはプログラムの実行単位である。また、コンピュータシステムに複数のCPUを搭載するマルチコアプロセッサシステムの技術も開示されている。これにより、前述のマルチプログラミング技術において、OSは複数のスレッドを複数のCPUに対して割り当てることができる。
また、1つのCPU、または複数のCPUが複数のスレッドを並列して実行する場合、スレッド間の共有データを保護するために、同期処理が行われる。同期処理が行われる例として、たとえば、複数のCPUが同時にメモリアクセスを行う場合、または、スレッドを各CPUに分散して割り付けた後、各CPUからの結果を収集する場合である。
同期処理に関する技術として、たとえば、並列実行部分の実行に要した時間を統計的に記録しておき、これから実行する処理部分が統計的な時間よりも長い可能性が高い場合、同期処理を失敗とみなして次の処理を割り当てる技術が開示されている。これにより、処理を実行していないCPUを減らすことができる。また、別の同期処理に関する技術として、たとえば、情報別の同期レベルと、同期レベルに対応する同期時刻間隔を記憶し、同期処理を行う負荷を減らす技術が開示されている(たとえば、下記特許文献1、2を参照。)。
特開平10−240549号公報 特開2004−5092号公報
しかしながら、上述した従来技術において、たとえば、特定の処理コードの位置で同期処理を行う2つのスレッドがあり、片方のスレッドが時間のかかる処理であった場合を想定する。このとき、特許文献1、2にかかる技術では、並列処理が失敗したとみなされてスレッドが終了してしまうという問題があった。また、もう一方のスレッドが、時間のかかるスレッドを待ち続けた場合、待ち続けるスレッドによってはユーザへの応答性が低下してしまうという問題があった。
本発明は、上述した従来技術による問題点を解消するため、ユーザへの応答性を向上できる同期処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示の同期処理方法は、第2スレッドと同期処理を行う第1スレッドの同期処理の種別を判定し、第1スレッドの同期処理の種別が第1の種別であるとき時間計測を開始し、計測時間が第1スレッドの応答許容時間を超えるときは第2スレッドの同期処理履歴に基づいて第1スレッドと第2スレッドとの同期処理を行い、他の処理要求があるときは応答許容時間を更新して第2スレッドの同期処理履歴に基づいて第1スレッドと第2スレッドとの同期処理を行う。
本同期処理方法によれば、同期処理後のユーザ応答を行う処理の実行開始が早まり、ユーザへの応答性を向上できるという効果を奏する。
図1は、マルチコアプロセッサシステム100におけるスレッドA〜スレッドCの動作を示す説明図である。 図2は、実施の形態にかかるマルチコアプロセッサシステム100のハードウェアを示すブロック図である。 図3は、マルチコアプロセッサシステム100の機能を示すブロック図である。 図4は、スレッド属性テーブル301とスレッド同期履歴テーブル302の記憶内容の一例を示す説明図である。 図5は、スレッドA〜スレッドDが実行開始した状態を示す説明図である。 図6は、スレッドAが同期ポイントに到着した状態を示す説明図である。 図7は、スレッドCが応答許容時間内に同期ポイントに到着した状態を示す説明図である。 図8は、スレッドBが同期ポイントに到着した状態を示す説明図である。 図9は、スレッドDが同期ポイントに到着する前に応答許容時間が経過した状態を示す説明図である。 図10は、スレッドDが応答許容時間経過後に同期ポイントに到着した状態を示す説明図である。 図11は、複数のユーザが存在する場合の適用例を示した説明図である。 図12は、同期チェッカ502の処理を示すフローチャート(その1)である。 図13は、同期チェッカ502の処理を示すフローチャート(その2)である。
以下に添付図面を参照して、開示の同期処理方法の好適な実施の形態を詳細に説明する。なお、本実施の形態にかかる同期処理方法を実行する情報処理装置の例として、複数のCPUを有するマルチコアプロセッサシステムにて説明を行う。マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。また、同期処理方法を実行する情報処理装置は、コアが単一であるシングルコアであってもよい。
図1は、マルチコアプロセッサシステム100におけるスレッドA〜スレッドCの動作を示す説明図である。図1では、複数のCPUを有するマルチコアプロセッサシステム100が、Webブラウザを実行している状態を想定している。マルチコアプロセッサシステム100は、携帯電話といった携帯端末を想定している。Webブラウザは3つのスレッドを含んでおり、それぞれスレッドA、スレッドB、スレッドCとする。また、符号101で示す図は、従来例にかかるマルチコアプロセッサシステム100でのスレッドA〜スレッドCの動作を示す説明図である。符号102で示す図は、本実施の形態にかかるマルチコアプロセッサシステム100でのスレッドA〜スレッドCの動作を示す説明図である。
また、マルチコアプロセッサシステム100は、ハードウェアとして、ユーザに文字や画像を表示するディスプレイ103、ユーザからの入力を受け付けるキーボード104が含まれる。ディスプレイ103、キーボード104の詳細については図2にて後述する。また、スレッドA〜スレッドCの詳細について、スレッドAは、ユーザからのテキスト入力を受け付けるスレッドである。スレッドBは画像を表示するスレッドである。スレッドCは、テキストを表示するスレッドである。
続けて、符号101で示す図を用いてスレッドA〜スレッドCの動作を説明する。WebブラウザはHTML(HyperText Markup Language)データを受信した後、HTMLデータを解析する。解析の結果、Webブラウザは、HTMLデータ内にテキスト入力フィールドと、画像表示部分とテキスト表示部分があると判断し、スレッドA〜スレッドCを時刻t0にて起動する。起動されたスレッドA〜スレッドCは、レンダリング処理を実行する。
レンダリング処理は、ディスプレイ103に表示する画像を生成する処理である。たとえば、スレッドAは、レンダリング処理によってテキスト入力枠の画像を生成する。スレッドBは、HTMLデータ内のリンクによって取得した圧縮された画像データから、画像フォーマットに従って伸長された画像を生成する。スレッドCは、HTMLデータ内のテキスト文字列の画像を生成する。
Webブラウザは、スレッドA〜スレッドCに、レンダリング処理の終了後に同期処理を実行するように指示する。具体的には、Webブラウザの開発者等が、レンダリング処理の終了時のコードに同期処理を挿入しておく。同期処理が挿入されたコード位置を同期ポイントと定義する。また、同期処理は、特定のグループに含まれるスレッドが全て同期ポイントに到着した際に、次の処理に進む機能を有する。この特定のグループのことを、同期グループと定義する。実行時、スレッドA〜スレッドCは、同一の同期グループに属するスレッドA〜スレッドC全てが同期ポイントに到着した場合に、次の処理に移行するようになる。
これにより、Webブラウザは、スレッドA〜スレッドCのレンダリング処理が全て終了し、表示可能となった時刻t3にて、ディスプレイ103にWebページを表示する。符号101の例では、時刻t1にてスレッドAのレンダリング処理が終了し、時刻t2にてスレッドBのレンダリング処理が終了し、時刻t3にてスレッドCのレンダリング処理が終了することを想定する。Webページの表示後、スレッドAは、ユーザからの入力受付処理を行う。入力受付処理は、たとえば、カーソルを点滅させて入力可能であることを示しつつ、ユーザによってキーボード104が操作され文字列が入力された場合に、入力された文字列を表示する処理を行う。
このように、従来例にかかるマルチコアプロセッサシステム100では、スレッドA〜スレッドCのレンダリング処理が全て終了してからWebページの表示を行っていた。もし、スレッドB、スレッドCのレンダリング処理に時間がかかった場合、ユーザはWebページの表示を待ち続ける状態になってしまっていた。たとえば、マルチコアプロセッサシステム100が過去に該当のWebページを開いたことがあった場合を想定する。ユーザがもしテキスト入力のためにWebページを閲覧したくても、Webページが表示されないためテキスト入力が行えず、ユーザが待たされてしまう状態となっていた。
次に、符号102で示す図を用いて本実施の形態にかかるマルチコアプロセッサシステム100でのスレッドA〜スレッドCの動作を説明する。スレッドA〜スレッドCは、時刻t0にてレンダリング処理を開始し、時刻t1にてスレッドAのレンダリング処理が終了し、時刻t2にてスレッドBのレンダリング処理が終了し、時刻t3にてスレッドCのレンダリング処理が終了する。ここで、時刻t1〜時刻t3間となる時刻t4にて、ユーザがキーボード104を頻繁に操作した場合を想定する。このとき、マルチコアプロセッサシステム100は、キーボード104からの入力を検出し、スレッドBのレンダリング結果、スレッドCの過去のレンダリング結果を用いてWebページを表示する。表示後、スレッドAは、入力受付処理を実行する。
このように、本実施の形態にかかるマルチコアプロセッサシステム100では、ユーザ応答を行うスレッドを先行実行することで、ユーザへの応答性を向上することができる。符号102の例では、スレッドCのレンダリング処理が終了する前に、ユーザは、スレッドAの入力受付処理によってテキスト入力が行えるようになり、応答性が向上することになる。
また、スレッドA〜スレッドCの同期処理は、同期処理を行わなくても、重大な問題が発生しない。具体的に、時刻t4では、スレッドCの過去のレンダリング結果を用いているため、時刻t3以降で取得可能となるスレッドCのレンダリング処理結果と、過去のレンダリング処理結果が異なる場合がある。しかし、ユーザはテキスト入力処理を目的としているため、過去の結果と現在の結果が異なっていても重大な問題が生じない。また、Webブラウザは、時刻t3にてスレッドCのレンダリング処理の終了後、レンダリング結果を過去のレンダリング処理結果と差し替えてディスプレイ103に表示してもよい。
このように、本実施の形態にかかるマルチコアプロセッサシステム100では、同期処理を行わなくても重大な問題が発生しない処理に対し、先行してユーザに対する処理を行うことで、ユーザに対する応答性を向上させる。
(マルチコアプロセッサシステム100のハードウェア)
図2は、実施の形態にかかるマルチコアプロセッサシステム100のハードウェアを示すブロック図である。図2において、マルチコアプロセッサシステム100は、CPUを複数搭載するCPUs201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を含む。また、マルチコアプロセッサシステム100は、フラッシュROM204と、フラッシュROMコントローラ205と、フラッシュROM206と、を含む。また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ103と、I/F(Interface)207と、キーボード104と、を含む。また、各部はバス208によってそれぞれ接続されている。
ここで、CPUs201は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs201は、シングルコアのプロセッサを並列して接続した全てのCPUを指している。CPUs201内の各CPUは、それぞれ専用のキャッシュメモリを有してもよい。CPUs201内には、CPU#0〜CPU#Nが含まれる。Nは0以上の整数である。なお、本実施の形態では、単一のCPUを有するシングルコアプロセッサであってもよい。本同期処理方法を実行する装置がシングルコアプロセッサである場合、OS等の機能により、マルチプログラミングが可能であると想定する。
ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPUs201のワークエリアとして使用される。フラッシュROM204は、OSなどのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F207によって新しいOSを受信し、フラッシュROM204に格納されている古いOSを、受信した新しいOSに更新する。
フラッシュROMコントローラ205は、CPUs201の制御に従ってフラッシュROM206に対するデータのリード/ライトを制御する。フラッシュROM206は、フラッシュROMコントローラ205の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F207を通して取得した画像データ、映像データなどである。フラッシュROM206は、たとえば、メモリカード、SDカードなどを採用することができる。また、フラッシュROM206は、本同期処理方法を実行するプログラムを格納していてもよい。
ディスプレイ103は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ103は、たとえば、TFT(Thin Film Transistor)液晶ディスプレイなどを採用することができる。
I/F207は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク209に接続され、ネットワーク209を介して他の装置に接続される。そして、I/F207は、ネットワーク209と内部のインターフェイスを司り、外部装置からのデータの入出力を制御する。I/F207には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード104は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード104は、タッチパネル式の入力パッドやテンキーなどであってもよい。
(マルチコアプロセッサシステム100の機能)
次に、マルチコアプロセッサシステム100の機能について説明する。図3は、マルチコアプロセッサシステム100の機能を示すブロック図である。マルチコアプロセッサシステム100は、記憶部303と、検出部304と、判定部305と、制御部306と、を含む。この制御部となる機能(検出部304〜制御部306)は、記憶装置に記憶されたプログラムをCPU#0が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図2に示したROM202、RAM203、フラッシュROM204、フラッシュROM206などである。または、I/F207を経由して他のCPUが実行することにより、その機能を実現してもよい。
また、図3では、検出部304〜制御部306がCPU#0の機能であるように図示されているが、CPU#0以外となるCPU#1〜CPU#Nも検出部304〜制御部306を有してもよい。また、図3に示すスレッドAはCPU#0に割り当てられたスレッドであり、スレッドBはCPU#1に割り当てられたスレッドである。スレッドAとスレッドBは、同一の同期グループに属しており、同期処理を行う。また、図3では、記憶部303がRAM203の機能であるように図示されているが、記憶部303は、他の記憶装置であるフラッシュROM204、フラッシュROM206の機能であってもよい。
記憶部303は、複数のスレッドの各々のスレッドの同期処理の種別を記憶する機能を有する。種別としては、複数のスレッドが同期ポイントに到着する前にスレッドを実行可能とする第1の種別か、複数のスレッドが同期ポイントに到着するまでスレッドを待機させる第2の種別かである。具体的には、記憶部303は、各々のスレッドの同期処理の種別をスレッド属性テーブル301に格納している。
また、記憶部303は、スレッドが同期処理を実行した際の処理履歴を記憶している。具体的には、記憶部303は、スレッドが同期処理を実行した際の処理結果を処理履歴としてスレッド同期履歴テーブル302に格納している。なお、スレッド属性テーブル301とスレッド同期履歴テーブル302の記憶内容の詳細については、図4にて後述する。
検出部304は、同期処理を複数回行う複数のスレッドのうち、特定のスレッドが同期処理を実行する処理コードの位置となる同期ポイントに到着したことを検出する機能を有する。なお、具体的にスレッドが同期ポイントに到着した状態とは、スレッドのプログラムカウンタが、同期処理を実行する処理コードの先頭を指した状態を示している。たとえば、検出部304は、スレッドAが同期ポイントに到着したことを検出する。なお、検出されたという情報は、RAM203、フラッシュROM204、フラッシュROM206などの記憶領域に記憶される。
判定部305は、検出部304によって特定のスレッドが到着したことが検出された場合、記憶部303に記憶された同期処理の種別に基づいて、特定のスレッドの同期処理の種別を判定する機能を有する。たとえば、スレッド属性テーブル301に、スレッドAの同期処理の種別が第1の種別であると格納されている場合、判定部305は、スレッドAの同期処理の種別が、第1の種別であると特定する。なお、特定された同期処理の種別は、RAM203、フラッシュROM204、フラッシュROM206などの記憶領域に記憶される。
また、判定部305は、さらに、検出部304によって特定のスレッドが到着したことが検出された後、検出された時刻から特定のスレッドに対応する応答許容時間を越えたか否かを判定してもよい。たとえば、スレッドAの同期処理の種別が第1の種別であり、応答許容時間が10[秒]である場合を想定する。この場合、判定部305は、スレッドAが同期ポイントに到着した時刻から10[秒]経過したことを判定する。なお、応答許容時間を越えたか否かという情報は、RAM203、フラッシュROM204、フラッシュROM206などの記憶領域に記憶される。
また、判定部305は、さらに、対象スレッドの処理要求以外となる他の処理要求が行われたかを判定してもよい。たとえば、判定部305は、キーボード104からの単位時間当たりの入力数が所定値を越えた場合に、対象スレッドの処理要求以外であるユーザからの処理要求が行われたとして判定してもよい。また、図2では表示していないが、マルチコアプロセッサシステム100がキーボード104以外の入力インターフェイスを有する場合、判定部305は、入力インターフェイスからの入力値によって、ユーザからの処理要求が行われたとして判定してもよい。
たとえば、マルチコアプロセッサシステム100が物体の傾き等を検出可能なジャイロセンサーを有する場合、判定部305は、物体の傾きの変化が激しい場合に、ユーザからの処理要求が行われたとして判定してもよい。
また、判定部305は、同期処理が行われない状態のまま、ユーザからの処理要求が行われた場合に、ユーザからの処理要求の時刻によって更新された応答許容時間を越えたかを判定してもよい。たとえば、スレッドAの同期処理の種別が第1の種別であり、応答許容時間が10[秒]であり、ユーザからの処理要求が、スレッドAが同期ポイントに到着した時刻から6[秒]後にあったと想定する。このとき、更新された応答許容時間が8[秒]となった場合、判定部305は、スレッドAが同期ポイントに到着した時刻から8[秒]経過したことを判定する。
なお、応答許容時間の更新方法としては、応答許容時間が短くなる方向に更新すればよい。たとえば、マルチコアプロセッサシステム100は、応答許容時間10[秒]とユーザからの処理要求の時間6[秒]とを相加平均した時間8[秒]を、新たな応答許容時間として更新する。
制御部306は、判定部305によって特定のスレッドの同期処理の種別が第1の種別であると判定された場合、複数のスレッドのうち同期ポイントに到着していない他のスレッドの処理履歴に基づいて、特定のスレッドに同期処理を実行させる機能を有する。なお、処理履歴とは、特定のスレッドが到着した時刻以前に他のスレッドが同期処理を実行した際の処理結果である。たとえば、制御部306は、他のスレッドとなるスレッドBの処理履歴に基づいて、同期処理の種別が第1の種別であると判定されたスレッドAに同期処理を実行させる。
また、制御部306は、特定のスレッドの同期処理の種別が第1の種別であり検出された時刻から特定のスレッドに対応する応答許容時間を越えたと判定された場合、他のスレッドの処理履歴に基づいて特定のスレッドに同期処理を実行させてもよい。また、制御部306は、応答許容時間が更新された場合、更新された応答許容時間を越えたと判定された場合、他のスレッドの処理履歴に基づいて特定のスレッドに同期処理を実行させてもよい。
図4は、スレッド属性テーブル301とスレッド同期履歴テーブル302の記憶内容の一例を示す説明図である。スレッド属性テーブル301は、スレッド名称、同期処理種別、応答許容時間、同期状態フラグという4つのフィールドを含む。スレッド名称フィールドには、対象となるスレッドの名称、ID(IDentification)といった、対象スレッドを一意に特定できる情報が格納される。
同期処理種別フィールドには、同期処理の処理方法の種別が格納される。格納される値は、“速”か“他”かの2種類である。第1の種別となる“速”は、対象スレッドが同期処理を行わなくとも問題の少ないスレッドであり、かつ、ユーザに対する応答性に影響を及ぼすスレッドであることを示している。第2の種別となる“他”は、対象スレッドが“速”以外のスレッドであることを示している。
同期処理を行わなくとも問題の少ないスレッドとしては、たとえば、レンダリング処理の結果を収集するスレッドである。また、ユーザに対する応答性に影響を及ぼすスレッドとしては、たとえば、キーボード104からの入力を受け付けるスレッド、または、ディスプレイ103に表示するスレッドである。このような条件に当てはまるか否かを、マルチコアプロセッサ100の設計者等が設計時に、スレッドごとに設定しておく。
応答許容時間フィールドには、ユーザに対する応答処理を実行するまでの許容時間の閾値が格納される。同期処理種別フィールドが“速”である対象スレッドが同期ポイントに到着し、応答許容時間フィールドに設定された時間を越えた場合、対象スレッドと他スレッドの過去の処理履歴とで同期処理を行う。なお、応答許容時間フィールドに設定される値は、アプリケーションプログラムの仕様に基づいた値を設定してもよいし、ユーザの操作履歴に基づいた値を設定してもよい。
同期状態フラグフィールドには、対象スレッドが同期処理を行ったか否かの状態が格納される。格納される値は、“未”、か“完”かの2種類である。“未”は、初期状態であり、対象スレッドが同期処理をまだ行っていない状態を示している。“完”は、対象スレッドが同期処理を既に行った状態を示している。
たとえば、図4に示すスレッドAは、同期処理を行わなくとも問題がなく、かつ、ユーザに対する応答性に影響を及ぼす同期処理種別が“速”のスレッドであり、応答許容時間が10[秒]、同期処理をまだ行っていない状態である。同様に、スレッドBは、同期処理種別が“速”のスレッドであり、応答許容時間が5[秒]、同期処理をまだ行っていない状態である。スレッドCとスレッドDは、“他”のスレッドであり、同期処理をまだ行っていない状態である。
スレッド同期履歴テーブル302は、スレッド名称、同期スレッド名称、同期処理履歴という3つのフィールドを含む。スレッド名称フィールドには、対象となるスレッドの名称、IDといった、対象スレッドを一意に特定できる情報が格納される。同期スレッド名称フィールドには、対象スレッドと同期処理を行うスレッドの名称が格納される。たとえば、図4では、スレッドCとスレッドAが同一の同期グループに属しており、同期処理を行う。同様に、スレッドDとスレッドBが同一の同期グループに属しており、同期処理を行う。
なお、同一の同期グループに含まれるスレッドが3つ以上である場合も存在する。この場合、同期スレッド名称フィールドには、同一の同期グループのうち、対象スレッドを除いた他のスレッド群が格納されることになる。たとえば、スレッドA、スレッドC、スレッドEが同一の同期グループに属する場合、スレッドAの同期スレッド名称フィールドには、スレッドCとスレッドEが格納される。
同期処理履歴フィールドには、対象スレッドが同期ポイントに到着した際の処理結果が格納される。たとえば、スレッドCが同期ポイントに到着した際に、処理結果が数値Nであれば、同期処理履歴フィールドに数値Nが格納される。また、処理結果が画像であれば、画像が格納されたポインタ等が同期処理履歴フィールドに格納される。
マルチコアプロセッサシステム100は、スレッド属性テーブル301とスレッド同期履歴テーブル302にアクセスして同期処理を行う。図5〜図10にて、マルチコアプロセッサシステム100にて実行中のスレッドA〜スレッドDの処理遷移を、スレッド属性テーブル301、スレッド同期履歴テーブル302の値と併せて説明を行う。
図5は、スレッドA〜スレッドDが実行開始した状態を示す説明図である。図5に示すCPUs201内のCPU#0〜CPU#3は、OS501#0〜OS501#3を実行しており、さらに、CPU#0〜CPU#3は、同期処理を監視する同期チェッカ502#0〜同期チェッカ502#3を実行している。さらに、OS501#0〜OS501#3内のスケジューラが、CPU#0〜CPU#3に、スレッドA〜スレッドDを割り当てている。スレッド属性テーブル301とスレッド同期履歴テーブル302のデータ内容は、同期処理履歴フィールドを除いて図4と等しいため、説明を省略する。
図5における、同期処理履歴フィールドには、スレッドCの同期処理履歴として、“2”、スレッドDの同期処理履歴として“4”が格納されている。これらの値は、前回の同期処理時に、同期ポイントに到着した際のスレッドC、スレッドDの処理結果である。また、同期処理履歴フィールドの初期値としては、空欄であってもよいし、設計者等によって初期値が格納されていてもよい。
図6は、スレッドAが同期ポイントに到着した状態を示す説明図である。スレッドAが同期ポイントに到着すると、同期チェッカ502#0は、スレッド属性テーブル301にアクセスし、スレッドAの同期処理種別を判断する。スレッドAの同期処理種別は“速”であるため、スレッドAは、同期処理を行わなくとも問題がなく、かつ、ユーザに対する応答性に影響を及ぼすスレッドである。したがって、同期ポイントに到着した時刻から応答許容時間10[秒]が経過しても同期処理が行われていない場合は、スレッドAを先行実行することになる。応答許容時間が経過したかを判断するため、同期チェッカ502#0は、計測を開始する。
図7は、スレッドCが応答許容時間内に同期ポイントに到着した状態を示す説明図である。図7では、スレッドCがスレッドAの応答許容時間10[秒]以内に、同期ポイントに到着した場合を示している。同期チェッカ502#2は、スレッドCの同期スレッドであるスレッドAの同期状態フラグを確認する。図7の例では応答許容時間以内に到着しているため、スレッドAの同期状態フラグは“未”のままである。同期スレッドがまだ同期処理を行っていないことを確認した同期チェッカ502#2は、スレッドAとスレッドCに、通常通りに同期処理を実行させる。
同期処理終了後、次の同期処理のため、同期チェッカ502#2は、スレッドAの同期状態フラグとスレッドCの同期状態フラグを“未”に設定する。また、同期チェッカ502#2は、スレッドCの同期処理履歴を更新する。図7の例では、スレッドCの処理結果が“5”であったため、スレッドCの同期処理履歴を“5”に設定する。
図8は、スレッドBが同期ポイントに到着した状態を示す説明図である。スレッドBが同期ポイントに到着すると、同期チェッカ502#1は、スレッドBの同期処理種別を判断する。スレッドBの同期処理種別は“速”であるため、同期チェッカ502#0は、計測を開始する。
図9は、スレッドDが同期ポイントに到着する前に応答許容時間が経過した状態を示す説明図である。図9では、図8にて同期チェッカ502#1が計測を開始した後、応答許容時間5[秒]が経過した状態を示している。応答許容時間の経過を検出した同期チェッカ502#1は、スレッドDの同期処理履歴から過去の処理結果となる“4”を取得する。スレッドBは、取得された過去の処理結果とで同期処理を実行する。同期処理実行後、同期チェッカ502#1は、スレッドBの同期処理履歴を“未”から“完”に設定する。
図10は、スレッドDが応答許容時間経過後に同期ポイントに到着した状態を示す説明図である。図10では、図9にてスレッドBが先行して実行された後に、スレッドDが同期ポイントに到着した状態を示している。同期ポイントに到着したことを検出した同期チェッカ502#3は、スレッドDの同期スレッドであるスレッドBの同期状態フラグを確認する。図10の例では応答許容時間経過後に到着しているため、スレッドBの同期状態フラグは“完”となっている。同期スレッドが同期処理を行ったことを確認した同期チェッカ502#3は、スレッドDに、同期処理をスキップさせる。
同期処理終了後、次の同期処理のため、同期チェッカ502#3は、スレッドBの同期状態フラグとスレッドDの同期状態フラグを“未”に設定する。また、同期チェッカ502#3は、スレッドDの同期処理履歴を更新する。図10の例では、スレッドDの処理結果が“6”であったため、スレッドDの同期処理履歴を“6”に設定する。
図11は、複数のユーザが存在する場合の適用例を示した説明図である。図11の例では、マルチコアプロセッサシステム100#A〜マルチコアプロセッサシステム100#Cが存在し、I/F207を通じてデータをやりとりしている。図11で動作しているアプリケーションプログラムは、たとえば、ネットワークゲーム等といった、複数のユーザが存在するプログラムを想定する。前述のネットワークゲームは、たとえば、シミュレーションゲーム等を想定する。ネットワークゲームは、マルチコアプロセッサシステム100#A〜マルチコアプロセッサシステム100#Cを使用するユーザからのコマンドをユーザデータとして受け付け、ユーザデータ群に対応した処理を行う。
また、マルチコアプロセッサシステム100#A内には、スレッドA〜スレッドCが存在する。スレッドAは、ユーザによるキーボード104の操作を受け付けてデータを取得する取得処理と、取得後、全てのユーザデータを処理してディスプレイ103に表示する表示処理を行うスレッドである。スレッドBは、I/F207を経由してマルチコアプロセッサシステム100#Bからデータを受信するスレッドである。スレッドCは、I/F207を経由してマルチコアプロセッサシステム100#Cからデータを受信するスレッドである。
図11の例では、スレッドAがキーボード104よりユーザデータAを取得して同期ポイントに到着し、スレッドBがI/F207よりユーザデータBを受信して同期ポイントに到着した状態である。しかし、スレッドCは、マルチコアプロセッサシステム100#Cとの回線が遮断され、ユーザデータCを受信できずに同期ポイントに到着できていない状態である。この状態で、スレッドAの応答許容時間を越えた場合、マルチコアプロセッサシステム100#Aは、取得したユーザデータAと受信したユーザデータBとスレッド同期履歴テーブル302に格納されている過去のユーザデータCを用いて、表示処理を実行する。
従来例にかかるネットワークゲームであれば、全てのユーザからのコマンドを取得できない場合、コマンドを破棄するか、到着するまで待ち続ける状態となっており、ユーザに対する応答性が低下していた。しかし、本実施の形態を適用した場合、ネットワークゲームは、取得できないコマンドに関しては前回のコマンドを基に、処理を続行することができ、ユーザに対する応答性を向上することができる。
以下、図12、図13にて、図5〜図10で説明した動作を可能とする同期チェッカ502の処理を説明する。同期チェッカ502は、CPUs201に含まれる全てのCPUで実行されるが、図12、図13では、CPU#0で実行される同期チェッカ502#0について説明を行う。また、同期チェッカ502が起動されるタイミングは、同期チェッカ502を実行するCPUに、スレッドが割り当てられたときである。
図12は、同期チェッカ502の処理を示すフローチャート(その1)である。同期チェッカ502#0は、自CPU内の全スレッドが処理終了したか否かを判断する(ステップS1201)。全スレッドが処理終了した場合(ステップS1201:Yes)、同期チェッカ502#0は、処理を終了する。なお、自CPUとなるCPU#0に新たなスレッドが起動した場合、同期チェッカ502#0は再び処理を開始する。
全スレッドのうち、処理終了していないスレッドが存在する場合(ステップS1201:No)、同期チェッカ502#0は、実行中のスレッドを取得し(ステップS1202)、実行中スレッドが同期ポイントに到着したか否かを判断する(ステップS1203)。到着していない場合(ステップS1203:No)、同期チェッカ502#0は、ステップS1201の処理に移行する。到着していた場合(ステップS1203:Yes)、同期チェッカ502#0は、実行中スレッドの同期処理種別を確認する(ステップS1204)。同期処理種別が“他”である場合(ステップS1204:他)、同期チェッカ502#0は、図13で示すフローチャートに移行する。
同期処理種別が“速”である場合(ステップS1204:速)、同期チェッカ502#0は、同期ポイントに到着した時刻を計測開始時刻として、待ち時間を計測開始する(ステップS1205)。計測開始後、同期チェッカ502#0は、実行中スレッドの同期スレッドが、同期ポイントに到着しているか否かを判断する(ステップS1206)。
なお、同期スレッドが同期ポイントに到着しているか否かは、同期スレッドの同期状態フラグを確認することで、判断することができる。具体的には、同期状態フラグが“完”であれば、同期スレッドが同期ポイントに到着しており、同期状態フラグが“未”であれば、同期スレッドが同期ポイントに到着していないことになる。また、同期スレッドは複数存在する場合もある。その場合、全ての同期スレッドが同期ポイントに到着している場合、同期チェッカ502#0はステップS1206:Yesの処理を実行する。全ての同期スレッドのうち、同期ポイントに到着していないスレッドが1つ以上存在する場合、同期チェッカ502#0は、ステップS1206:Noの処理を実行する。
同期ポイントに到着していない場合(ステップS1206:No)、同期チェッカ502#0は、待ち時間が応答許容時間を越えたか否かを判断する(ステップS1207)。越えていない場合(ステップS1207:No)、同期チェッカ502#0は、ユーザからの頻繁なキー入力があったか否かを判断する(ステップS1208)。なお、頻繁なキー入力の判断基準としては、たとえば、単位時間あたりに、キーボード104の入力が一定以上あった場合、同期チェッカ502#0は頻繁なキー入力があったと判断するように設定してもよい。
頻繁なキー入力がなかった場合(ステップS1208:No)、同期チェッカ502#0は、ステップS1206の処理に移行する。頻繁なキー入力があった場合(ステップS1208:Yes)、同期チェッカ502#0は、計測開始時刻から、ユーザからの頻繁なキー入力があった時刻までを応答要求時間に設定する(ステップS1209)。設定後、同期チェッカ502#0は、新たな応答許容時間を、(応答要求時間+応答許容時間)/2に設定し(ステップS1210)、ステップS1206の処理に移行する。図12の例では、新たな応答許容時間の算出方法を、相加平均を用いて算出しているが、相乗平均、調和平均等、他の平均方法を用いて算出してもよい。
待ち時間が応答許容時間を越えた場合(ステップS1207:Yes)、同期チェッカ502#0は、実行中スレッドに、他スレッドの同期処理履歴を基に同期処理の実行要求をする(ステップS1211)。続けて、同期チェッカ502#0は、実行中スレッドの同期状態フラグを“完”に変更し(ステップS1212)、ステップS1201の処理に移行する。
実行中スレッドの同期スレッドが同期ポイントに到着している場合(ステップS1206:Yes)、同期チェッカ502#0は、実行中スレッドと同期スレッドとで同期処理を実行させる(ステップS1213)。同期処理を実行させた後、同期チェッカ502#0は、実行中スレッドと同期スレッドの同期状態フラグを“未”に変更し(ステップS1214)、ステップS1201の処理に移行する。
図13は、同期チェッカ502の処理を示すフローチャート(その2)である。実行中スレッドの同期処理種別が“他”である場合、同期チェッカ502#0は、同期スレッド内で同期処理種別が“速”であるスレッドが存在するか否かを判断する(ステップS1301)。同期処理種別が“速”であるスレッドが存在する場合(ステップS1301:Yes)、同期チェッカ502#0は、同期スレッド内の同期処理種別が“速”であるスレッドのうち、同期状態フラグが“完”であるスレッドが存在するかを判断する(ステップS1302)。
なお、同期スレッド内に、同期処理種別が“速”であるスレッドが複数存在する場合もありえる。この場合、同期処理種別が“速”であるスレッドのうち、同期状態フラグが“完”となるスレッドが1つでも存在する場合、同期チェッカ502#0は、ステップS1302:Yesの処理を実行する。全て“未”であった場合、同期チェッカ502#0は、ステップS1302:Noの処理を実行する。
同期処理種別が“速”であるスレッドが存在しない場合(ステップS1301:No)、または、同期状態フラグが“完”であるスレッドが存在しない場合(ステップS1302:No)、同期チェッカ502#0は、実行中スレッドと同期スレッドとで同期処理を実行させる(ステップS1303)。
同期状態フラグが“完”であるスレッドが存在する場合(ステップS1302:Yes)、同期チェッカ502#0は、実行中スレッドに同期処理をスキップするように指示する(ステップS1304)。指示後、同期チェッカ502#0は、同期スレッド内の実行中スレッド以外の全てのスレッドの同期状態フラグが“完”か否かを判断する(ステップS1305)。
実行中スレッド以外の全てのスレッドの同期状態フラグが“完”である場合(ステップS1305:Yes)、同期チェッカ502#0は、同期スレッド全ての同期状態フラグを“未”に変更する(ステップS1306)。実行中スレッド以外の全てのスレッドの同期状態フラグが“完”でない場合(ステップS1305:No)、同期チェッカ502#0は、実行中スレッドの同期状態フラグを“完”に変更する(ステップS1307)。
ステップS1303、ステップS1306、ステップS1307の処理の終了後、同期チェッカ502#0は、実行中スレッドの処理結果を同期処理履歴に格納し(ステップS1308)、ステップS1201の処理に移行する。
以上説明したように、同期処理方法によれば、ユーザ応答を行う第1の種別となる第1スレッドが同期ポイントに到着し、第1スレッドと同期を取る第2の種別となる第2スレッドの到着が遅い場合、第2スレッドの処理履歴を用いて第1スレッドを先行実行する。これにより、同期処理方法を実行するコンピュータは、ユーザ応答を早く行えるようになるため、ユーザに対する応答性を向上させることができる。
また、第2スレッドの履歴を用いて第1スレッドを先行実行するため、第2スレッドの処理結果が処理履歴と比べて大きく変化しない場合、本同期処理方法は特に有効である。たとえばWebページを再読み込みした場合、第2スレッドの処理履歴と第2スレッドの処理結果とは、Webページが更新されていない場合等しくなるため、コンピュータが本実施の形態にかかる同期処理方法を適用すると、特に効果がある。
また、第1の種別と第2の種別の分け方については、設計者等が、スレッド間の同期処理を行わなくとも問題が少ないか否かに応じて、スレッドごとにレベル分けを行う。これにより、コンピュータは、重大な問題を及ぼさないスレッドと同期ポイントに到着していないスレッドの過去の処理履歴とで同期処理を行い、後続の処理を投機的に実行することで、ユーザに対する応答性を向上することができる。
また、同期処理方法は、第1スレッドが同期ポイントに到着した時点から、応答許容時間が経過したかを判定し、経過していた場合に、第1スレッドと第2スレッドの過去の処理履歴とで同期処理を行い、第1スレッドを先行実行させてもよい。これにより、同期処理方法を実行するコンピュータは、ユーザが不快に感じない時間まで第2スレッドの到着を待つことができる。
また、同期処理方法は、ユーザからの処理要求があった場合に、応答許容時間を早めてもよい。これにより、同期処理方法を実行するコンピュータは、ユーザが不快に感じたと判断した際に、第1スレッドを先行させる時刻を早め、ユーザに対する応答性をより向上することができる。
また、同期処理方法は、第1スレッドと第2スレッドの過去の処理履歴とで同期処理を行い、第1スレッドが先行実行した後、第1スレッドの同期状態フラグを、完了を示す値に設定してもよい。これにより、同期処理方法を実行するコンピュータは、第2スレッドが同期ポイントに到着したときに、既に第1スレッドが同期処理を完了していることを判断することができる。
また、同期処理方法は、第1スレッドと第2スレッドとの同期処理が行われた場合、第1スレッドの同期状態フラグと、第2スレッドの同期状態フラグを、初期状態を示す値に設定してもよい。これにより、同期処理方法を実行するコンピュータは、第1スレッドと第2スレッドが最初の同期処理に対して本同期処理方法を行った後、続けて次の同期処理に対しても本同期処理方法を適用することができる。
また、同期処理方法は、第1スレッドの同期処理の種別が第2の種別であるとき、第2スレッドの同期処理の種別を判定してもよい。これにより、同期処理方法を実行するコンピュータは、第2のスレッドの同期処理の種別に応じて処理内容を変更できる。
また、同期処理方法は、第1スレッドの同期処理の種別が第2の種別であり、第2スレッドの同期処理の種別が第1の種別であって、第2スレッドの同期状態フラグが完了を示していた場合、第1スレッドと第2スレッドとの同期処理をスキップしてもよい。この場合、第2スレッドは同期処理が既に完了した状態であるため、同期処理方法を実行するコンピュータは、同期処理を省略しスキップすることで、同期処理を実行したことと同じ状態にできる。
また、同期処理方法は、第1スレッドの同期処理の種別と、第2スレッドの同期処理の種別が共に第2の種別である場合、第1スレッドと第2スレッドの同期処理を行ってもよい。これにより、同期処理方法を実行するコンピュータは、同期処理を行わないとデータの整合性が取れなくなる場合には、全てのスレッドが同期ポイントに到着するまで待機し、データの整合性を保つことができる。
また、同期処理方法は、第1スレッドと第2スレッドとの同期処理をスキップした場合、第1スレッドと第2スレッドの同期状態フラグを、初期状態を示す値に設定してもよい。これにより、同期処理方法を実行するコンピュータは、第1スレッドと第2スレッドが本同期処理方法の特徴である処理履歴を用いた同期処理を行った後、続けて次の同期処理に対しても本同期処理方法を適用することができる。
また、同期処理方法は、同期処理の種別が第2の種別であるスレッドに対して、対象のスレッドの同期処理履歴に同期ポイントに到着した際の処理結果を記録してもよい。たとえば、第1スレッドの同期処理の種別が第1の種別、第2スレッドの同期処理の種別が第2の種別であると想定する。このとき、第1スレッドと第2スレッドが同期処理を行った後続けて同期処理を行う際に、第2スレッドの同期ポイントへの到着が遅れた場合、第1スレッドが第2スレッドの同期処理履歴を用いることで処理を先行することができる。
また、同期処理方法は、ユーザからの処理要求に関して、外部インターフェイスからの入力数が所定値を超えた場合に、ユーザからの処理要求と判断してもよい。たとえば、ユーザによるキーボードの連打が行われた場合、同期処理方法を実行するコンピュータは、ユーザからの処理要求と判断する。キーボードの連打は、Webページが開かない、または画面が遷移しない、等といった動作に対してユーザが不快と感じたときに行われる行為である。したがって、同期処理方法を実行するコンピュータは、ユーザが不快と感じたときに行われる行為に対応してユーザ応答を早く行えるようになるため、ユーザに対する応答性をより向上させることができる。
なお、本実施の形態で説明した同期処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。また、本同期処理方法を実行するプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本同期処理方法を実行するプログラムは、インターネット等のネットワークを介して配布してもよい。
#0、#1 CPU
100 マルチコアプロセッサシステム
203 RAM
208 バス
301 スレッド属性テーブル
302 スレッド同期履歴テーブル
303 記憶部
304 検出部
305 判定部
306 制御部

Claims (11)

  1. コンピュータが、
    前記コンピュータが実行するマルチスレッドの各スレッドの同期処理の種別と、前記各スレッドの同期処理の種別が第1の種別である際の応答許容時間とを記憶するテーブルを参照して、第2スレッドと同期処理を行う第1スレッドの同期処理の種別を判定し、
    前記第1スレッドの同期処理の種別が前記第1の種別であるとき時間計測を開始し、
    前記テーブルを参照して、計測時間が前記第1スレッドの応答許容時間を超えるときは前記第2スレッドの同期処理履歴に基づいて前記第1スレッドと前記第2スレッドとの同期処理を行い、
    他の処理要求があるときは前記応答許容時間を更新し、計測時間が更新した前記応答許容時間を超えるときに、前記第2スレッドの同期処理履歴に基づいて前記第1スレッドと前記第2スレッドとの同期処理を行うこと
    を特徴とする前記コンピュータによって実行されるマルチスレッドの同期処理方法。
  2. 前記コンピュータが、
    前記応答許容時間経過前に、前記第2スレッドが同期処理を行う状態にあるときは、前記第1スレッドと前記第2スレッドとの同期処理を行うこと
    を特徴とする請求項1に記載の同期処理方法。
  3. 前記コンピュータが、
    前記第2スレッドの同期処理履歴に基づいて前記第1スレッドと前記第2スレッドとの同期処理が行われた後に、前記第1スレッドの同期状態フラグを設定すること
    を特徴とする請求項1または請求項2に記載の同期処理方法。
  4. 前記コンピュータが、
    前記応答許容時間経過前に前記第2スレッドが同期処理を行う状態にあって前記第1スレッドと前記第2スレッドとの同期処理が行われた後に、前記第1スレッドおよび前記第2スレッドの同期状態フラグを初期状態に設定すること
    を特徴とする請求項2に記載の同期処理方法。
  5. 前記コンピュータが、
    前記テーブルを参照して、前記第1スレッドの同期処理の種別が第2の種別であるとき前記第2スレッドの同期処理の種別を判定すること
    を特徴とする請求項1乃至請求項4の何れか一に記載の同期処理方法。
  6. 前記コンピュータが、
    前記第1スレッドの同期処理の種別が前記第2の種別であって前記第2スレッドの同期処理の種別が前記第1の種別であって前記第2スレッドの同期状態フラグが設定されているとき、前記第1スレッドと前記第2スレッドとの同期処理を省略すること
    を特徴とする請求項5に記載の同期処理方法。
  7. 前記コンピュータが、
    前記第1スレッドの同期処理の種別が前記第2の種別であって前記第2スレッドの同期処理の種別が前記第2の種別であるとき、前記第1スレッドと前記第2スレッドとの同期処理を行うこと
    を特徴とする請求項5に記載の同期処理方法。
  8. 前記コンピュータが、
    前記第1スレッドと前記第2スレッドとの同期処理を省略した後に、前記第1スレッドと前記第2スレッドの同期状態フラグを初期状態に設定すること
    を特徴とする請求項6に記載の同期処理方法。
  9. 前記コンピュータが、
    前記第2スレッドの同期処理の種別が前記第2の種別であるときに前記第1スレッドと前記第2スレッドとの同期処理が行われた後、前記第1スレッドおよび前記第2スレッドの同期処理履歴に前記第1スレッドと前記第2スレッドとの同期処理に到着した際の処理結果を記録すること
    を特徴とする請求項7に記載の同期処理方法。
  10. 前記コンピュータが、
    前記他の処理要求は、外部入力数が所定値を超えるときに検出されること
    を特徴とする請求項1乃至請求項9の何れか一に記載の同期処理方法。
  11. コンピュータが、
    第2スレッドと同期処理を行う第1スレッドの同期処理の種別が第1の種別であるか第2の種別であるかを判定し、
    前記第1スレッドの同期処理の種別が第2の種別であるとき前記第2スレッドの同期処理の種別を判定し、
    前記第2スレッドの同期処理の種別が前記第1の種別であって前記第2スレッドの同期状態フラグが設定されているとき、前記第1スレッドと前記第2スレッドとの同期処理を省略し、
    前記第2スレッドの同期処理の種別が前記第2の種別であるとき、前記第1スレッドと前記第2スレッドとの同期処理を行うこと
    を特徴とする同期処理方法。
JP2012549538A 2010-12-22 2010-12-22 同期処理方法 Expired - Fee Related JP5672311B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/073222 WO2012086041A1 (ja) 2010-12-22 2010-12-22 同期処理方法

Publications (2)

Publication Number Publication Date
JPWO2012086041A1 JPWO2012086041A1 (ja) 2014-05-22
JP5672311B2 true JP5672311B2 (ja) 2015-02-18

Family

ID=46313345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012549538A Expired - Fee Related JP5672311B2 (ja) 2010-12-22 2010-12-22 同期処理方法

Country Status (3)

Country Link
US (1) US9690633B2 (ja)
JP (1) JP5672311B2 (ja)
WO (1) WO2012086041A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101399473B1 (ko) * 2012-08-13 2014-05-28 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법
KR101399472B1 (ko) * 2012-08-13 2014-06-27 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법
JP5998851B2 (ja) * 2012-10-30 2016-09-28 日本電気株式会社 データ処理システム、データ処理方法およびデータ処理プログラム
KR101713114B1 (ko) * 2015-08-12 2017-03-08 엔에이치엔엔터테인먼트 주식회사 모바일 환경에서의 리소스 다운로드 방법 및 시스템
JP6683049B2 (ja) * 2016-07-20 2020-04-15 富士通株式会社 情報処理装置、情報処理方法、情報処理システム及びプログラム
CN110365768B (zh) * 2019-07-15 2021-07-06 腾讯科技(深圳)有限公司 分布式系统的数据同步方法、装置、介质、电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108392A (ja) * 2001-09-28 2003-04-11 Fujitsu Ltd 同期プログラムおよび同期方法
WO2009090964A1 (ja) * 2008-01-17 2009-07-23 Nec Corporation 同期制御方法および情報処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0744403A (ja) * 1993-08-02 1995-02-14 Nippon Telegr & Teleph Corp <Ntt> 連続メディアの同期方法
JP3730740B2 (ja) 1997-02-24 2006-01-05 株式会社日立製作所 並列ジョブ多重スケジューリング方法
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
US7117496B1 (en) * 2001-05-09 2006-10-03 Ncr Corporation Event-based synchronization
JP4381655B2 (ja) 2002-05-31 2009-12-09 株式会社日立製作所 ストレージシステム、ストレージ装置、及び該ストレージ装置を利用した情報共有方法
US8266189B2 (en) * 2008-06-02 2012-09-11 Microsoft Corporation Adapting between coupled and decoupled provider interfaces

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108392A (ja) * 2001-09-28 2003-04-11 Fujitsu Ltd 同期プログラムおよび同期方法
WO2009090964A1 (ja) * 2008-01-17 2009-07-23 Nec Corporation 同期制御方法および情報処理装置

Also Published As

Publication number Publication date
US9690633B2 (en) 2017-06-27
US20130275996A1 (en) 2013-10-17
JPWO2012086041A1 (ja) 2014-05-22
WO2012086041A1 (ja) 2012-06-28

Similar Documents

Publication Publication Date Title
JP5672311B2 (ja) 同期処理方法
JP5488697B2 (ja) マルチコアプロセッサシステム、同期制御方法、および同期制御プログラム
EP2805258B1 (en) Low resolution placeholder content for document navigation
US9292347B2 (en) Status tool to expose metadata read and write queues
JP4667206B2 (ja) マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
JP5516747B2 (ja) マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム
WO2016039273A1 (ja) 表示制御装置、表示制御方法および表示制御プログラム
US6530031B1 (en) Method and apparatus for timing duration of initialization tasks during system initialization
WO2018187130A1 (en) Ink render using high priority queues
JP2011039668A (ja) Webページの表示方法、計算機システム及びプログラム
TWI241523B (en) Debugging device and debugging method
JP5444724B2 (ja) 検証支援プログラム、情報処理装置および検証支援方法
JP5590114B2 (ja) ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム
JP5862722B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP5542643B2 (ja) シミュレーション装置及びシミュレーションプログラム
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
JP5354102B2 (ja) マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
JP5376042B2 (ja) マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム
JP5811211B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP4802130B2 (ja) 図面作成プログラム、図面作成装置および図面作成方法
JP5713091B2 (ja) マルチコアプロセッサシステム、制御方法、および制御プログラム
JP2021000424A (ja) コンピュータプログラム、サーバ装置、端末装置、プログラム生成方法、及び方法
JP5896066B2 (ja) プロセッサシステム、および制御プログラム
JP2018101214A (ja) 情報処理装置、情報処理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140623

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: 20141125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141208

R150 Certificate of patent or registration of utility model

Ref document number: 5672311

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees