」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從線程中安全調用C ++類成員函數?

如何從線程中安全調用C ++類成員函數?

發佈於2025-03-04
瀏覽:636

How Can I Safely Call C   Class Member Functions from Threads?
在多線程領域中呼叫類成員在線程中的class成員函數,在多線程的領域中,遇到線程執行中類的成員函數的需要是常見的。但是,由於C類成員函數中隱藏的“此”參數。

例如,考慮以下內容:

類C { void *print(void *){cout 現在,讓我們創建一個c Instances的向量:

vector class; pthread_t t1; class.push_back(c()); class.push_back(c());

創建一個執行c.print()的線程,您可以直觀地寫下:

.print,null,null,null);

(tree_item ::*)(void*)'to“ void*(*)(*)(void*)’
class C {
    void *print(void *) { cout 要克服這個障礙,您有兩個選項:

靜態類方法

[靜態類方法沒有一個“此”參數,並且可以在沒有類實例的情況下直接調用。這是您可以為Hello函數實現靜態類方法的方法:
vector classes;
pthread_t t1;
classes.push_back(C());
classes.push_back(C());
pthread_create(&t,null,&c :: hello,null);

exterly exply the function''然後可以使用此函數指針來創建線程。

pthread_create(&t1, NULL, &c[0].print, NULL);
其中hello_helper的定義為:

[&& && && &&華

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3