2014-10-27 99 views
0

我已經注意到這個創建線程時,我們何時必須使用LPTHREAD_START_ROUTINE?

HandleWorker = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)this->WorkerThread, this, 0, &Id); 

我也意識到了這個問題here,這解釋了LPTHREAD_START_ROUTINE類型定義 起始地址爲線程

但是,當我們要使用任何人都可以向我解釋的它?我的意思是爲什麼不能,我們只是使用

HandleWorker = CreateThread(NULL, 0, this->WorkerThread, this, 0, &Id); 
+0

你確定這個例子有效嗎?這個參數是某個簽名函數的地址。它應該看起來像'&YourClass :: WorkerThread'。 – NikolayKondratyev 2014-10-27 18:24:59

+0

@NikolayKondratyev,第一個絕對有效! – Samer 2014-10-27 18:37:18

+0

當你堅持使用標準C++即'std :: thread'時,你不會這麼做。在弄清楚你通過什麼的時候更聰明一些。 – MSalters 2014-10-28 09:46:06

回答

2

LPTHREAD_START_ROUTINE是定義爲一個函數指針,需要一個空指針,並返回一個DWORD類型。

如果this->WorkerThread屬於這種類型,則不必投射它。

相關問題