掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.26650

スレッドの動作制御について
投稿者---宮崎(2006/04/19 15:21:04)


Windows XP 上で Microsoft Visual C++ を用いたプログラミングの
勉強をしています。
スレッドを作成する場合には、以下の Win32 関数を用いれば
よいところまでは分かりました。

HANDLE CreateThread(
 LPSECURITY_ATTRIBUTES lpThreadAttributes, // Security Descriptor
 DWORD dwStackSize,                        // initial stack size
 LPTHREAD_START_ROUTINE lpStartAddress,    // thread function
 LPVOID lpParameter,                       // thread argument
 DWORD dwCreationFlags,                    // creation option
 LPDWORD lpThreadId                        // thread identifier
); 


ここで、作成したスレッドを、
(1) 特定のプロセッサ上で実行させる、
(2) 実行させるタイミングを決める、
などの細かい制御を行うためにはどのようにすれば
よろしいのでしょうか ?
ご教示願います。

(1) は、例えば、プロセッサーが 10 個ある場合に、
作成したスレッドを 5 番目のプロセッサーで実行するよう指定すること、
(2) は、例えば、作成したスレッドを開始する時刻を決めたり、
ほぼ同時刻に作成された複数のスレッドをどの順番で実行させるか
決めることを指しています。

よろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:スレッドの動作制御について 26658 んぽ 2006/04/20 17:47:26


No.26658

Re:スレッドの動作制御について
投稿者---んぽ(2006/04/20 17:47:26)


CreateThreadを使うよりbeginthreadexを使用したほうが良いかと。
スレッド内にてCランタイムライブラリが使用できるし。

>>(1) 特定のプロセッサ上で実行させる
これについては少なくとも私はC言語上では聞いたことありません。
というか、メリットがないと思いますが。

>>(2) 実行させるタイミングを決める
これについては色々と制御法があります。
待機関数、セマフォ等で調べて見てください。

あと、スレッドをやるなら排他制御をお忘れなく。
デットロックなんかになると洒落にならないので。
この辺はクリティカルセクション、ミューテックス等で調べてみてください。


この投稿にコメントする

削除パスワード

No.26812

Re:スレッドの動作制御について
投稿者---みやざき(2006/05/10 11:49:03)


んぽさん。
コメントありがとうございます。
個人的にも調べていたためレスポンスが遅くなってしまって
済みません。

>CreateThreadを使うよりbeginthreadexを使用したほうが良いかと。
>スレッド内にてCランタイムライブラリが使用できるし。

ありがとうございます。
beginthreadex を利用するようにします。

>>>(1) 特定のプロセッサ上で実行させる
>これについては少なくとも私はC言語上では聞いたことありません。
>というか、メリットがないと思いますが。

Processor Affinity を用いるとやりたかったことに
近いことができそうです。
関数は SetThreadAffinityMask(...) です。
メリットはキャッシュを有効に利用してパフォーマンスを
上げることかな ?

>>>(2) 実行させるタイミングを決める
>これについては色々と制御法があります。
>待機関数、セマフォ等で調べて見てください。
>
>あと、スレッドをやるなら排他制御をお忘れなく。
>デットロックなんかになると洒落にならないので。
>この辺はクリティカルセクション、ミューテックス等で調べてみてください。

元々はデータの依存関係がないスレッドどうしで簡単に
実行タイミングを制御できないかな ? と思いまして。
ミューテックスなどを用いて排他制御を行う方法に加えて、
Thread Priority を用いるやり方や、Fiber (thread より固いから
Fiber なの ?) を利用するやり方がありそうです。

ありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧