マルチスレッド
ウインドウズプログラミングを始めて1ヶ月弱の初心者です。
色々探してみたのですが、結局良く分かりませんでした。
宜しくお願いします。
以下のリンクにおいて、
http://wisdom.sakura.ne.jp/system/winapi/win32/win143.html
1)主スレッドとは、具体的にソースファイルのどこからどこまでのことを言うのでしょうか?
そもそもスレッドとは何でしょうか?関数のことでしょうか?
また、タスクとは、実行ファイルと考えて良いのでしょうか?
2)副スレッド(ThreadFunc)を作成すると、主スレッド(WinMain?)と副スレッドで並列処理をするとのことですが、CPUは普通一つしかないので、実際は、主スレッド(WinMain?)と副スレッドを常に切り替えながら動作すると思います。が、ここで疑問なのですが、主スレッドと副スレッドの切り替えはいつ誰が行うのでしょうか?また、切り替えタイミング(例えば1ms毎に切り替えたいとか)は自由に設定出来るのでしょうか?
3)"マルチスレッドは親プロセスのメモリ空間を共有します"
とあるのですが、これは
CreateThread(NULL , 0 , ThreadFunc , (LPVOID)hWnd , 0 , &dwID)
の(LPVOID)hWnd を、副スレッド(ThreadFunc)に引数として渡しているから、つまり、主スレッドと副スレッドは、(LPVOID)hWnd だけがメモリを共有する、ということでしょうか?
主スレッドと副スレッドでメモリを共有すると、どんなメリットがあるのでしょうか?
4)マルチスレッドはこういう時に使うとよい、
というような大まかな判断基準があれば教えて下さい。
分かり辛い質問で申し訳有りません。宜しくお願い致します。
お礼
ありがとうございます。 まずは入門からだと思いますので 1.の本を購入したいと思います。 そこで基礎を身につけ、必要に応じて2.の本の 購入も考えて見ます。