トップページ > 過去ログ > 記事閲覧
PlaySoundMem関数の挙動がわからない
名前:フズリナ 日時: 2011/09/27 21:36

こんにちは! DxLibでミニゲーム的なものを作らせていただいてます 今回質問したいのはPlaySoundMem関数についてです この関数の第二引数にDX_PLAYTYPE_BACKを指定するとずっと音楽が鳴り続けますよね 私はコレが不思議でなりません CPUは一度に2つのことを出来無いはずです なのにPlaySoundMem(id,DX_PLAYTYPE_BACK);と書くと描画処理とか計算処理とかしている間も音楽を鳴らし続けてくれます どうやって音楽を再生するようにしているんでしょうか? 私的にはProcessMessag関数の中でほんの少し音を鳴らすという関数を呼び出しているのかな、と思っているのですが実際のところどうなんでしょう? DxLibを使っていて疑問に思ったことを質問させて頂きました 解答よろしくお願いします

Page: 1 |

Re: PlaySoundMem関数の挙動がわからない ( No.1 )
名前:クラスクラス 日時:2011/09/27 23:18

DxLibはDirectSoundを使用しているので、 最近の(XP以降?)WidnowsだとDirectSoundは Windows MME = Multi Media Extension を使っているはず。 Windows MME はMMEドライバーにより提供されているので、アプリケーションと並列に動く。 (例:ファイルアクセス中でもマウスが止まったりしないでしょ) 以上。 (あまり深く考えない方がいいと思うけど^^;) (補足:サウンド系は良く内部変わるから、最新は仕組みがまた違ってきてるのですよ、 互換のためにDirectSoundは当分生き残ると思うけどね)
Re: PlaySoundMem関数の挙動がわからない ( No.2 )
名前:フズリナ 日時:2011/09/29 00:31

>>クラスクラスさん >例:ファイルアクセス中でもマウスが止まったりしないでしょ そう、まさしくそれです よくよく考えたらPlyaSoundMemに限らずいろんな所で私の知識では理解できないことをやっているんですね >アプリケーションと並列に動く これは何故行えるのですか? ドライバーってUSB機器などを使用するときにインストールされるものという認識しかなかったのですが、これがCPUと同時に処理をしているということですか? ということはCPUの他にドライバーという物理デバイスが付いているということなんでしょうか? なんで並列に処理ができるのかが本当にわからないです
Re: PlaySoundMem関数の挙動がわからない ( No.3 )
名前:クラスクラス 日時:2011/09/29 06:04

WindowsはマルチタスクOSです。 マルチタスクとはIT用語辞書より引用 --------------------------------------- 1台のコンピュータで同時に複数の処理を並行して行うOSの機能。CPUの処理時間を非常に短い単位に分 割し、複数のアプリケーションソフトに順番に割り当てることによって、複数の処理を同時に行って いるようにみせているため、多くのアプリケーションソフトを同時に起動すれば、その分だけ個々の アプリケーションソフトの動作は遅くなる。MS-DOSなどのように同時に1つのアプリケーションソフト しか起動できないOSはシングルタスクOSと呼ばれる。UNIXやWindows、Mac OSなどはマルチタスクOS である。CPUの実行権限をすべてOSが管理し、強制的に処理の切り替えを行う方式をプリエンプティブ マルチタスクと呼び、処理の切り替えが個々のアプリケーションソフトに任されている方式をノンプ リエンプティブマルチタスクという。 --------------------------------------- Windowsはプリエンプティブマルチタスク なので、個々の処理が勝手に細切れにされて、少しずつ実行して、見た目幾つも平行に動いている様に見える。 しかし、最近の4CPUとか6CPUだと、実際に4,6個並列に動く。 今、私のPCではプロセスは50個以上動いているし、その中で並列に動いているプログラム数(スレッド) は幾つあるか分からない、なおかつドライバーとして動いている並列のプログラム数は見えない。 似たような数がそちらでも動いているでしょう。分からないところで、こんなにも多くのプログラム が動いています。サウンドのドライバーもこの中の1つとして並列に動き、指示したプログラム (あなたが書いたブログラム)に従い音を鳴らしている。 OSを勉強すると理解できるようになると思いますが、とても複雑です。 チャレンジして見るのもいいかもしれません。
Re: PlaySoundMem関数の挙動がわからない ( No.4 )
名前:フズリナ 日時:2011/09/29 22:47

>クラスクラスさん なるほど! そのスレッドとやらを立てることによって一瞬処理して他のプログラムの処理して一瞬処理してというのをOSがやってくれるんですね 原理を全て理解しようとするのは私の頭では無理っぽいです 易しく教えて頂きありがとうございました

Page: 1 |