c++に関するyosio_ismのブックマーク (2)

  • 第87章  マルチスレッド その1

    今回から、マルチスレッドのプログラミングの解説をします。 これは、ウィンドウズが32ビット版になって実現した新機能です。 そもそもマルチスレッドとは何なのでしょうか? 正確な回答は大変難しいのですが、気持ち的には一つの プログラム中に複数のスレッドを走らせることのできる しくみと考えてください。スレッドは一つのプログラムみたいなもので これはこれで勝手に動作します。あれこれ考えるより 例題を見た方が早いでしょう。今回のサンプルは親ウィンドウと子供ウィンドウ を作りそれぞれに丸と四角形をランダムに表示するというものです。 左のようなプログラムはどのように作ればよいのでしょうか。 まず、親と子供ウィンドウを作りSetTimer関数を使って、 WM_TIMERメッセージが来る度にランダムに丸やら四角を描画する。 もちろんそれでも作れます。しかし、今回は丸と四角のランダム描画の ためのスレッドを作

  • Visual C++ の小技

    自分の書いたコードがどんな風にアセンブラに落ちているのか、確かめたくなることはありませんか? え、ない? ほんと? いや別にいいんですけど。 というわけで、コンパイル結果が気になるような人はたいていもう知っているはずなんですが、念のため。 一番簡単なのは、コンパイラにリスティングファイルを作らせることでしょう。 プロジェクトオプション、C/C++、リスティングファイルから指定できます。 出力結果は、中間オブジェクト出力先ディレクトリに a.cod とかで出てきます。 後は個人のお楽しみ。 普通にやると eip はインラインアセンブラでは取れませんが、次の関数を呼び出すことで取得できます。 LPVOID __declspec(naked) GetEip() { __asm mov eax, [esp]; __asm ret; } ↓の方で解説していますが、__declspec(naked)

  • 1