注:沒有找到原文連接,只找到了轉(zhuǎn)載文章的連接 如何在linux 下c++中類的成員函數(shù)中創(chuàng)建多線程 linux系統(tǒng)中線程程序庫(kù)是POSIX pthread。POSIX pthread它是一個(gè)c的庫(kù),用C語言進(jìn)行多線程編程我這里就不多說了,網(wǎng)上的例子很多。但是如何在C++的類中實(shí)現(xiàn)多線程編程呢?如果套用C語言中創(chuàng)建多線程的方式,在編譯的時(shí)候會(huì)出現(xiàn)...does not match `void*(*)(void*)..這樣的錯(cuò)誤。出現(xiàn)這種情況的原因是,編譯器在處理C++和C文件上是不同的,也就是說C++和C語言里邊指針函數(shù)不等價(jià)。解決這種錯(cuò)誤的方法
有兩種:
class test #endif
[test.cpp]
void *threadFunction()
void test::createThread()
[main.cpp] #inlcude "test.h"
int main()
2、將線程函數(shù)作為類的成員函數(shù),那么必須聲明改線程函數(shù)為靜態(tài)的函數(shù),并且該線程函數(shù)所引用的其他成員函數(shù)也必須是靜態(tài)的,如果要使用類的成員變量,則必須在創(chuàng)建線程的時(shí)候通過void
*指針進(jìn)行傳遞。
class test #endif
[test.cpp]
void *test::threadFunction(void *arg)
void sayHello(int r)
[main.cpp] #inlcude "test.h"
int main()
|
|