Re: Android:サウンドの読み込み速度 ( No.1 ) |
- 名前:管理人 日時:2019/02/15 23:50
> スマホ版でのサウンド(ogg)の読み込みに時間がかかる為、
> スレッド化したいのですが、以下の関数もスレッドでの使用は不可でしょうか。
LoadSoundMem を使用するスレッドは一つで、且つ読み込んでいる間は別スレッドでの
LoadSoundMem や DeleteSound は一切行わないようにすれば大丈夫かもしれません
ただ、その場合読み込みを行うスレッドは一つなのは変わらないので、読み込みに
掛かる時間は変わりませんが…
読み込みに掛かる時間自体を短くしたい場合はやはり ogg ではなく wav にするのが
手っ取り早いのですが、容量は抑えたいということでしょうか?
|
Re: Android:サウンドの読み込み速度 ( No.2 ) |
- 名前:yumetodo 日時:2019/02/16 02:08
便乗質問させてください。
このサウンド周りの関数群がスレッドセーフにならない理由って主に何に起因しているんでしょうか?
XAudioかなにかの制約でしょうか?
たしかSDL2だとスレッドセーフに読み込みができるのでDxLibができない理由が前々から気になっていたのですが・・・。
|
Re: Android:サウンドの読み込み速度 ( No.3 ) |
- 名前:ギウ 日時:2019/02/16 11:18
>管理人様
>LoadSoundMem や DeleteSound は一切行わないようにすれば大丈夫かもしれません
了解です! では使ってみます。
やりたかったのは、例えば、
CPU1:フェードイン→画面表示→フェードアウト
CPU2:LoadSoundMem等
これなら実質0秒で読み込んでる感じになるかなと。
|
Re: Android:サウンドの読み込み速度 ( No.4 ) |
- 名前:ギウ 日時:2019/02/16 11:32
P.S
実質0秒、上手くいきました。
10回くらい動かしましたが強制終了もなさそうです。
ありがとうございます。
|
Re: Android:サウンドの読み込み速度 ( No.5 ) |
- 名前:管理人 日時:2019/02/17 02:57
上手くいったようで何よりです (^ ^;
> yumetodoさん
DXライブラリは SetUseASyncLoadFlag( TRUE ); を実行した状態で読み込み関連の関数を使用した場合は
DXライブラリが内部で作成したスレッドで読み込み処理が行われますが、あくまで
『DXライブラリが内部で作成したスレッド』のみ考慮されたプログラムとなっていますので、
DXライブラリ側が全く考慮していない独自のスレッドで LoadSoundMem や DeleteSoundMem を実行された
場合の動作の保証ができません
|
Re: Android:サウンドの読み込み速度 ( No.6 ) |
- 名前:yumetodo 日時:2019/02/21 21:46
ということはSTLなどで作成した複数スレッドから同期読み込みでLoadSoundMemを同時に呼び出した場合、保証があるように聞こえるのですがどうでしょうか?
例:
std::vevtor<std::future<int>> futures;
futures.emplace_back(std::async(std::launch::async, [](){ return DxLib::LoadSoundMem('0.opus'); }));
futures.emplace_back(std::async(std::launch::async, [](){ return DxLib::LoadSoundMem('1.opus'); }));
std::vector<int> handls;
for(auto&& f : futures) handls.emplace_back(f.get());
|
Re: Android:サウンドの読み込み速度 ( No.7 ) |
- 名前:管理人 日時:2019/02/22 06:35
> yumetodoさん
すみません、何かうまく意図が伝わっていないようです
シンプルに申し上げますと
DXライブラリは基本的にスレッドセーフではありません
( スレッドセーフを保証する想定でプログラムを組んでいません )
の一言に尽きますので、yumetodoさんが『例』で載せられたプログラムも正常な動作は保証できません
|