「マルチスレッド」の編集履歴(バックアップ)一覧はこちら

マルチスレッド - (2010/03/02 (火) 22:34:35) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

**スレッドの基本 スレッドの生成はCreateThread関数で行う。 スレッドは引数を1つだけもつ関数にする。 名前は何でもいい。 スレッドは戻り値を持っていて、GetExitCodeThreadで調べることができる。 スレッドの終を待つにはWaitFor〇〇関数を使うと良いかも。 #asciiart(blockquote){ #N88BASIC Dim hT As HANDLE Dim id As DWord hT = CreateThread(ByVal 0, 0, AddressOf(t), 5, 0, Varptr(id)) WaitForSingleObject(hT, INFINITE) CloseHnadle(hT) Print "スレッドは正しく終了しました" Function t(a As DWordPtr) As Long Print a End Function } このようにサブスレッドを作るのは簡単なんだけど、スレッド間の同期や、終了にかかあるタイミングがおかしいと、不具合のもとになる。 マルチスッドレは速くならない。速くなるケースは、マルチコアCPUで、かつスレッドの実際の処理がスレッドの生成や同期にかかるコストより大きくないといけない。 ウインドウプロシージャのような、場合、長大な処理をウインドウプロシージャでやると、フリーズするので、マルチスレッドにすることで、処理がすぐにカエルので、フリーズ対策になる。 ***クリティカルセクション ***セマフォ ***イベント
**スレッドの基本 スレッドの生成はCreateThread関数で行う。 スレッドは引数を1つだけもつ関数にする。 名前は何でもいい。 スレッドは戻り値を持っていて、GetExitCodeThreadで調べることができる。 スレッドの終を待つにはWaitFor〇〇関数を使うと良いかも。 #asciiart(blockquote){ #N88BASIC Dim hT As HANDLE Dim id As DWord hT = CreateThread(ByVal 0, 0, AddressOf(t), 5, 0, Varptr(id)) WaitForSingleObject(hT, INFINITE) CloseHandle(hT) Print "スレッドは正しく終了しました" Function t(a As DWordPtr) As Long Print a End Function } このようにサブスレッドを作るのは簡単なんだけど、スレッド間の同期や、終了にかかあるタイミングがおかしいと、不具合のもとになる。 マルチスッドレは速くならない。速くなるケースは、マルチコアCPUで、かつスレッドの実際の処理がスレッドの生成や同期にかかるコストより大きくないといけない。 ウインドウプロシージャのような、場合、長大な処理をウインドウプロシージャでやると、フリーズするので、マルチスレッドにすることで、処理がすぐにカエルので、フリーズ対策になる。 ***クリティカルセクション ***セマフォ ***イベント

表示オプション

横に並べて表示:
変化行の前後のみ表示: