読者です 読者をやめる 読者になる 読者になる

ThreadProc

スレッドに渡す関数ThreadProcには、引数を渡すことももちろんできる・・・。

ThreadProc 関数

引数の受け渡しは、LPVOID型(void *型ポインタ)を介して行われるので、

THREAD_PARAMというパラメータを集めた構造体を用意しておく・・・。
メンバは、スレッド番号m_iNo、出力メッセージm_tszMessage・・・。

THREAD_PARAM配列tpを5要素分用意・・・。
0番のメンバをセットしたら、CreateThreadにはそのアドレスを渡す・・・。
同様に、1~4番でもメンバをセットしてCreateThreadに渡す・・・。

ThreadProcの引数lpParameterはLPVOIDなので、(THREAD_PARAM *)にキャストして、(THREAD_PARAM *)型ポインタpTPに格納し、そこからメンバを取り出して、for文で出力・・・。
これで、スレッドごとにスレッド番号や、メッセージなどを出力できる・・・。

i = 1, m_iNo = 0, m_tszMessage = No.0
i = 1, m_iNo = 4, m_tszMessage = No.4
i = 1, m_iNo = 2, m_tszMessage = No.2
i = 1, m_iNo = 3, m_tszMessage = No.3
i = 1, m_iNo = 1, m_tszMessage = No.1
i = 2, m_iNo = 0, m_tszMessage = No.0
i = 2, m_iNo = 4, m_tszMessage = No.4
i = 2, m_iNo = 2, m_tszMessage = No.2
i = 2, m_iNo = 3, m_tszMessage = No.3
i = 2, m_iNo = 1, m_tszMessage = No.1
i = 3, m_iNo = 0, m_tszMessage = No.0
i = 3, m_iNo = 4, m_tszMessage = No.4
i = 3, m_iNo = 3, m_tszMessage = No.3
i = 3, m_iNo = 2, m_tszMessage = No.2
i = 3, m_iNo = 1, m_tszMessage = No.1
i = 4, m_iNo = 0, m_tszMessage = No.0
i = 4, m_iNo = 4, m_tszMessage = No.4
i = 4, m_iNo = 3, m_tszMessage = No.3
i = 4, m_iNo = 2, m_tszMessage = No.2
i = 4, m_iNo = 1, m_tszMessage = No.1
i = 5, m_iNo = 0, m_tszMessage = No.0
i = 5, m_iNo = 4, m_tszMessage = No.4
i = 5, m_iNo = 2, m_tszMessage = No.2
i = 5, m_iNo = 3, m_tszMessage = No.3
i = 5, m_iNo = 1, m_tszMessage = No.1
続行するには何かキーを押してください . . .

このような感じで・・・。

Sample/ThreadProc.cpp at master · bg1bgst333/Sample · GitHub