開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
std::thread
問題(Question):
最近在實作multithread的時候遇到了一些問題
以下是程式碼,main function呼叫的函式會呼叫兩條thread幫忙做兩個加法運算
https://pastebin.com/GHn0WWmP
執行output結果是預期的37或73沒有問題
但當如果要呼叫thread的函式是class member function的時候就會compiler error
https://pastebin.com/E5vxyxXW
以下是我自己環境(GCC 4.8.5)的報錯
https://pastebin.com/nNem1nAv
我用線上編譯器onlinegdb.com試的error如下:
error: invalid use of non-static member function ‘void ATPG::test(int, int)’
稍微google一下有找到這篇類似問題的解法
https://thispointer.com/c11-start-thread-by-member-function-with-arguments/
但這篇的使用情境是在main function中開一條thread呼叫class member function
我的使用情境是class member function開thread呼叫其他class member function
用上述網站的解法一樣會有很多error
想請問前輩們這種使用情境下該怎麼呼叫thread比較正確
還是這其實是錯誤的使用方式,應該要在main function中開thread比較正確呢?
抱歉比較少multithread的coding經驗,麻煩前輩們賜教了,謝謝!