[问题] class member function中使用std::thread

楼主: skyHuan (Huan)   2021-06-09 05:58:25
开发平台(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经验,麻烦前辈们赐教了,谢谢!
作者: Lipraxde (Lipraxde)   2021-06-09 06:48:00
用你查到的那篇的方法啊,是有什么 error?
作者: chengcti (版主请投我一票!)   2021-06-09 09:09:00
class member 前面加上 staticclass 还没建立 传进去可能会变成存取不存在的内存所以一定要是classstatic member
作者: flarehunter (Range)   2021-06-09 12:07:00
Google "c++ std::thread class method" 第一篇shorturl.at/frstM
作者: Lipraxde (Lipraxde)   2021-06-09 13:45:00
你是第一次写 C++?错误讯息都有,文章里也有介绍,花点时间看不好吗?
作者: sarafciel (Cattuz)   2021-06-09 13:58:00
你原本那篇文章是有你要的解的 这边你要自己学会变通
作者: Lipraxde (Lipraxde)   2021-06-09 22:00:00
其实你一开始就有找到答案了,比较熟 C++ 后可以再回来看看最初的盲点,加油吧~

Links booklink

Contact Us: admin [ a t ] ucptt.com