Thread ライブラリ


概要 - Abstract

VCSSL Thread ライブラリ は、マルチスレッドを扱うための標準ライブラリです。

- 注意 -
現行版の RINEARN VCSSL Runtime では、VCSSL Thread APIをサポートしていますが、マルチスレッド処理への対応が十分ではありません。 これは、現在のVCSSLエンジンの基本設計が、シングルスレッドのみを想定して開発された初期のVCSSLエンジンの基本設計を、部分的に踏襲している事に由来します。 これにより、処理内容によっては、論理的な不整合を含む、いくつかの不都合が生じる可能性があります。 RINEARN VCSSL Runtime で VCSSL Thread API の使用を検討する場合は、この事情を踏まえた上で判断してください。現時点で想定可能なものとしては、以下のような不都合が生じる可能性があります。
・同一の配列変数へ、複数スレッドから同時アクセスした場合における、インデックスの不整合
現在のVCSSLエンジンにおける、配列変数の値を参照するモジュールには、シングルスレッドのみを想定した設計が残っています。これにより、同一の配列変数に、同時にアクセスした場合、正しくないインデックスの値が参照される可能性があります。
・パフォーマンスのボトルネック
現在のVCSSLエンジンには、マルチスレッド処理ではボトルネックとなる箇所を複数含んでいます。このため、並列性の高い処理を複数スレッドで分担しても、パフォーマンスの大幅な向上は見込めません。 つまり、RINEARN VCSSL Runtime における Thread API は、あくまで複数の処理の流れを作る目的には有効ですが、演算パフォーマンスを引き出すような目的にはあまり意味がありません。
・同一の関数への、非常に頻繁な複数スレッド同時アクセスに伴う、エンジンの緊急停止
原則として、同一の関数を複数スレッドで実行する事は可能です。その場合、引数やローカル変数は、スレッド間で混同されないように、スレッドの数だけ確保されます。 しかし、同時アクセスのタイミングがあまりに短い間隔に集中すると、この処理が追いつかなくなり、不整合を防ぐためにエンジンが緊急停止する場合があります。 ※ 関数の実行中の時間が重なる事は問題ではありません。関数をコールする瞬間(引数を渡す瞬間)が重なる事が問題となります。
以上のような不都合が生じる可能性があるため、現状の RINEARN VCSSL Runtime では、VCSSL Thread APIを厳密性の要求される処理(科学技術計算や数値計算など)に使用する事は推奨されません。

目次 - Index

int newThread()
スレッドを生成し、それに固有の識別番号である「スレッドID」を割り振って返します。
void deleteThread( int threadID )
スレッドを破棄します。
void startThread( int threadID )
スレッドの実行を開始します。
void awaitThread( int threadID )
スレッドの実行が終了するまで、呼び出し元の処理を待機します。
void sleepThread( int threadID, int time )
スレッドの実行を一時停止します。
void sleepThread( int threadID, int milliSeconds, nanoSeconds )
スレッドの実行を一時停止します。
void waitForThread( int threadID )
スレッドの実行が終了するまで、呼び出し元の処理を待機します。現在は、より新しい awaitThread が利用可能です。この関数は互換目的でサポートされています。
void onThreadStart( int threadID )
スレッドが生成され、実行が開始した時にコールされます。この関数は、生成されたスレッドの処理として実行されます。ここに、スレッドに行わせたい処理を実装します。
void onThreadEnd( int threadID )
スレッドの処理が終了した時にコールされます。

構造体 - Structs

- なし - None -


変数 - Variables

- なし - None -


関数 - Functions

定義
- Signature
int newThread()
詳細
- Details
スレッドを生成し、それに固有の識別番号である「スレッドID」を割り振って返します。
戻り値
- Return
生成したスレッドに割り振られたスレッドID(識別番号)
定義
- Signature
void deleteThread( int threadID )
詳細
- Details
スレッドを破棄します。
引数
- Arguments
threadID : 対象スレッドのID
定義
- Signature
void startThread( int threadID )
詳細
- Details
スレッドの実行を開始します。
引数
- Arguments
threadID : 対象スレッドのID
定義
- Signature
void awaitThread( int threadID )
詳細
- Details
スレッドの実行が終了するまで、呼び出し元の処理を待機します。
引数
- Arguments
threadID : 対象スレッドのID
定義
- Signature
void sleepThread( int threadID, int time )
詳細
- Details
スレッドの実行を一時停止します。
引数
- Arguments
threadID : 対象スレッドのID
time : 待機する時間のミリ秒数
定義
- Signature
void sleepThread( int threadID, int milliSeconds, nanoSeconds )
詳細
- Details
スレッドの実行を一時停止します。
引数
- Arguments
threadID : 対象スレッドのID
milliSeconds : 待機する時間のミリ秒数
nanoSeconds : 待機する時間のナノ秒数
定義
- Signature
void waitForThread( int threadID )
詳細
- Details
スレッドの実行が終了するまで、呼び出し元の処理を待機します。現在は、より新しい awaitThread が利用可能です。この関数は互換目的でサポートされています。
引数
- Arguments
threadID : 対象スレッドのID

イベントハンドラ - Event Handler

定義
- Signature
void onThreadStart( int threadID )
詳細
- Details
スレッドが生成され、実行が開始した時にコールされます。この関数は、生成されたスレッドの処理として実行されます。ここに、スレッドに行わせたい処理を実装します。
引数
- Arguments
threadID : イベント発生元スレッドのID
定義
- Signature
void onThreadEnd( int threadID )
詳細
- Details
スレッドの処理が終了した時にコールされます。
引数
- Arguments
threadID : イベント発生元スレッドのID

この階層の目次
お知らせ

リニアングラフ3DのVCSSL用APIにカメラ制御関数を追加、回転アニメーションツールも同梱
2019年10月09日 - RINEARNでは10月9日にソフトウェアの最新版をリリースしました。VCSSLのAPI関数の追加や、リニアングラフ3Dのアニメーションツールの追加など行っています。その概要をお知らせします。

小型関数電卓 RINPn(旧称リニアンプロセッサー nano)の公式ページを開設
2019年10月02日 - 現在オープンソースで開発中の、「シンプル&コンパクト」を目指した小型プログラマブル関数電卓ソフト「 RINPn 」の公式ページが、RINEARNサイト内にオープンしました。その概要をお知らせします。

Vnanoの公式サイトがオープン、チュートリアルやAPI仕様書等も掲載
2019年08月07日 - オープンソースのアプリケーション組み込み用スクリプトエンジン「 Vnano 」の公式サイトを開設しました。チュートリアルや、スクリプトエンジンのAPI仕様書などが参照できます。その概要をお知らせします。

新着
3Dグラフを回転アニメーションさせるツール

3Dグラフを、Z軸まわりにゆっくりと回転アニメーションさせるツールです。全角度のグラフを、連番の画像ファイルに保存する事もできます。
2019年10月09日
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
[公式ガイドサンプル] 各種GUIコンポーネントを画面上に配置する

「VCSSL GUI開発ガイド」内のサンプルコードです。色々な種類のGUI部品を画面上に配置します。
2019年07月28日
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年05月24日
開発元Twitterアカウント