トップページ > 記事閲覧
非同期読み込み停止でフリーズ
名前:おちゃづけ 日時: 2017/03/15 11:56

 こんにちは。初めて質問させていただきます。  簡単に説明すると、サウンドファイルのハンドルを格納する変数を2つに制限して 遣り繰りするソフトを作っていて、 そこで、割りと大きめの.oggファイルを読み込むために、 デフォルトの読み込みモードで非同期読み込みをするのですが、 非同期読み込みが、次の次の読み込み開始に間に合わなかった場合、 その読み込みを切り上げる必要があり、(ハンドルが二つしかないから。) そこで、DeleteSoundMem(handle)のために処理を止めてしまうのが嫌で、 SetASyncLoadFinishDeleteFlag(handle)を使用しました。 すると、なんとも残念なことに、恐らくSetASyncLoadFinishDeleteFlagが ハンドルの削除をするタイミングで、ソフトがフリーズしてしまいます。 自分のコーディングが間違っているのか、または、どこかでエラーが出ているのか。 全くわかりません。 一応、この現象を再現するコードが組めましたので、 以下からダウンロードして、ご確認お願い致します。 ttps://1drv.ms/u/s!AlP2QO91JmgHapTVoTOgECVXdeY ※また、使用OSはwin10です。 よろしくお願いしますm(_ _)m
メンテ

Page: 1 |

Re: 非同期読み込み停止でフリーズ ( No.1 )
名前:管理人 日時:2017/03/15 23:44

すみません、DXライブラリのバグです 再現コードまで作成していただきありがとうございます お陰で直ぐに原因を突き止めることが出来ました バグは SetASyncLoadFinishDeleteFlag で指定されたハンドルと同種の別ハンドルも 非同期読み込みされている場合に SetASyncLoadFinishDeleteFlag で指定された ハンドルが先に読み込みが終わったタイミングでデッドロックするというものでした 修正版をアップしましたので、よろしければお使いください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // Windows版 C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest.exe // Android版 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい)
メンテ
Re: 非同期読み込み停止でフリーズ ( No.2 )
名前:おちゃづけ(解決) 日時:2017/03/16 20:55

返信が遅くなり、申し訳ありません。 素早い対応、ありがとうございます。 無事、動いてくれました! ありがとうございましたm(_ _)m
メンテ

Page: 1 |

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

   クッキー保存