天天看點

VC2015建立多線程

<code>__declspec</code><code>(</code><code>thread</code><code>) </code><code>int</code> <code>nCount = 0;</code><code>//線程局部變量</code>

<code>DWORD</code> <code>WINAPI threadProc(</code><code>LPVOID</code> <code>* wparm)</code>

<code>{</code>

<code>     </code><code>int</code> <code>i = 0;</code>

<code>     </code><code>while</code> <code>(1)</code>

<code>     </code><code>{</code>

<code>         </code><code>if</code> <code>(i == 20) </code><code>break</code><code>;</code>

<code>         </code><code>Sleep(30);</code>

<code>         </code><code>nCount =i++;</code>

<code>         </code><code>CString str;</code>

<code>         </code><code>str.Format(_T(</code><code>"%d\n"</code><code>), nCount);</code>

<code>         </code><code>TRACE(str); </code>

<code>     </code><code>}</code>

<code>     </code><code>return</code> <code>0;</code>

<code>}</code>

<code>void</code> <code>CtestThreadDlg::OnBnClickedButton14()</code>

<code>      </code><code>HANDLE</code>  <code>handle = ::CreateThread(NULL, 0, </code>

<code>      </code><code>(LPTHREAD_START_ROUTINE)threadProc,</code><code>this</code><code>, 0,NULL);</code><code>//函數類型轉換</code>

将類的成員函數,作為線程的回調函數.代碼如下:

<code>class</code> <code>test</code>

<code>    </code><code>UINT</code>   <code>m_nCount;</code>

<code>    </code><code>public</code><code>:</code>

<code>       </code><code>UINT</code> <code>WINAPI threadProc(</code><code>LPVOID</code> <code>* wparm);</code>

<code>UINT</code> <code>__stdcall test::threadProc(</code><code>LPVOID</code> <code>* wparm)</code>

<code>         </code><code>m_nCount =i++;</code>

<code>         </code><code>str.Format(_T(</code><code>"%d\n"</code><code>), m_nCount);</code>

<code>void</code> <code>test::OnBnClickedStart()</code>

<code>    </code><code>typedef</code>  <code>UINT</code>   <code>(__stdcall  *stdProc)(</code><code>LPVOID</code><code>);</code>

<code>    </code><code>typedef</code>  <code>UINT</code>   <code>(__stdcall  test::* ProcObject)(</code><code>LPVOID</code><code>);</code>

<code>    </code><code>ProcObject  theProc = (ProcObject)&amp;test::threadProc;</code>

<code>        </code><code>HANDLE</code>  <code>handle = CreateThread(NULL, 0, </code>

<code>            </code><code>(LPTHREAD_START_ROUTINE)*(stdProc*)&amp;theProc,</code><code>this</code><code>, 0,NULL);</code>

<code></code>

本文轉自Chinayu201451CTO部落格,原文連結:http://blog.51cto.com/9233403/2048717 ,如需轉載請自行聯系原作者