トップページ > 記事閲覧
FileRead_openの非同期読み込み時の引数に関して
名前:チップ 日時: 2015/10/05 20:00

すみません、非同期読み込み時の FileRead_open( char *FilePath, int ASync ) 関数の使い方について質問させてください。 この関数のみ引数で非同期読み込みを行うかどうかを指定するようになっていますが これは SetUseASyncLoadFlag関数で一旦非同期設定にした後にFileRead_openでも引数で非同期指定をする、ということでしょうか。 例えばSetUseASyncLoadFlag(FALSE)で同期読み込みにしてFileRead_open( char *FilePath, TRUE )にした場合はどうなるのでしょうか? 他の非同期対応関数は非同期対応の引数がないのに何故 FileRead_open( char *FilePath, int ASync )にのみ 非同期対応の引数があるのかを教えて頂けるとありがたいです。 よろしくお願いいたします。
メンテ

Page: 1 |

Re: FileRead_openの非同期読み込み時の引数に関して ( No.1 )
名前:管理人 日時:2015/10/07 02:21

> これは SetUseASyncLoadFlag関数で一旦非同期設定にした後にFileRead_openでも引数で非同期指定をする、ということでしょうか。 いえ、こちらの引数の ASync は SetUseASyncLoadFlag 以前にファイル読み込みでのみ有効な非同期処理を 実装したときのもので、SetUseASyncLoadFlag( TRUE ) ; の機能を使用する場合は TRUE にする必要はありません 引数 ASync を TRUE にして開いたファイルは非同期読み込みモードでファイルをオープンします この非同期読み込み機能は FileRead系の関数専用なので、読み込み完了の確認には FileRead_idle_chk という 専用の関数を使用する必要があります // ファイル読み込みが完了しているかどうかを取得する int FileRead_idle_chk( int FileHandle ) ; 引数 ASync を TRUE にした場合の非同期読み込み処理は一つの処理毎に終了を待つ必要はありませんが、 例えば FileRead_read を連続で呼び出した場合、2回目の FileRead_read 呼び出しの時点で一回目の FileRead_read の読み込みが完了していない場合はそこで処理がブロック( 一時停止 )されてしまいますので、 スムーズな非同期処理を実行する場合はやはり一回の処理毎に FileRead_idle_chk で処理の完了をチェックする 必要があります・・・ あとDXアーカイブファイル内のファイルアクセスには無効であったり、Windows環境以外でも無効であったりと、 SetUseASyncLoadFlag( TRUE ) ; の非同期読み込み機能を使用した方が良いです ( というか存在を完全に失念していました・・・ )
メンテ
Re: FileRead_openの非同期読み込み時の引数に ( No.2 )
名前:チップ(解決済) 日時:2015/10/07 06:42

あ、なるほど。 現状のSetUseASyncLoadFlag( TRUE ) ;が実装されている状態でプログラムを組んでいる分には こちらの引数でTRUEにする必要はないということですね。 ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存