為什麼類中的執行緒函式必須要宣告靜態?
之前也沒注意到這問題,大家先搞清楚下面幾個關鍵詞吧:
class CMyTest
{
public:
CMyTest();
~CMyTest();
DWORD Start();
static DWORD WINAPI ThreadFun(LPVOID);
// ....
};
void main()
{
CMyTest test;
// .....
}
其中CMyTest是一個類,main函式中test是這個類的一個區域性變數(物件)。
看完上面這個例子,再仔細推敲一下下面這段話:
類的靜態函式不屬於該類的任何一個物件,而是屬於類本身,所以不受物件區域性變數的影響,在執行時可以直接呼叫類的靜態函式,從而啟動執行緒!
相反,如果一個類的一個區域性物件的生命週期結束了,難道執行緒函式就不能用了嗎?
相關文章
- 基類中定義的虛擬函式,子類中必須要覆蓋嗎?為什麼?函式
- 執行緒join為什麼在解構函式中執行緒函式
- iOS拾遺——為什麼必須在主執行緒操作UIiOS執行緒UI
- Vue 元件data為什麼必須是函式?Vue元件函式
- 模板類成員函式的定義和宣告為什麼要放在一個檔案中函式
- 面試中關於多執行緒同步,你必須要思考的問題面試執行緒
- C靜態庫的建立與使用--為什麼要引入靜態庫?
- 類中靜態回撥函式應用函式
- 測試人員為什麼必須要會 LinuxLinux
- GC 為什麼要掛起使用者執行緒? 什麼愁什麼怨?GC執行緒
- java的執行緒、建立執行緒的 3 種方式、靜態代理模式、Lambda表示式簡化執行緒Java執行緒模式
- CompletableFuture必須加上執行緒池!!執行緒
- 類內的靜態成員函式函式
- Java靜態static工具類執行緒安全問題研究Java執行緒
- Java多執行緒3:Thread中的靜態方法Java執行緒thread
- 多執行緒靜態方法同步執行緒
- 執行緒池管理(1)-為什麼需要執行緒池執行緒
- redis為什麼用單執行緒不用多執行緒Redis執行緒
- 程式設計規範-父子執行緒必須放在不同的執行緒池中程式設計執行緒
- 為什麼前端初學者必須要明白髮布訂閱模式前端模式
- python為什麼要用執行緒Python執行緒
- 為什麼要使用執行緒池執行緒
- 為什麼redis是單執行緒的以及為什麼這麼快?Redis執行緒
- 靜態內部類實現的單例模式是執行緒安全的單例模式執行緒
- 谷歌為什麼必須迴歸中國谷歌
- WPF 之 呼叫執行緒必須為 STA,因為許多 UI 元件都需要執行緒UI元件
- 執行緒中的幾個退出相關函式執行緒函式
- 執行緒中呼叫fork函式,鎖的變化執行緒函式
- Redis為什麼是單執行緒?為什麼有如此高的效能?Redis執行緒
- 為什麼?為什麼StringBuilder是執行緒不安全的?UI執行緒
- 03.關於執行緒你必須知道的8個問題(中)執行緒
- 執行緒安全的單態類會影響效能麼?執行緒
- 物件中的靜態屬性是否在多執行緒中共享物件執行緒
- 程式執行緒新解:什麼是程式?什麼是執行緒?執行緒
- Java中建構函式、靜態程式碼塊、程式碼塊的執行順序Java函式
- redis是單執行緒的,為什麼這麼快Redis執行緒
- ArrayList 為什麼執行緒不安全執行緒
- 什麼時候執行緒不安全?怎樣做到執行緒安全?怎麼擴充套件執行緒安全的類?執行緒套件