電商網(wǎng)站購(gòu)物流程合肥seo管理
說(shuō)明:
通過(guò)類里面的函數(shù)作為線程入口,我個(gè)人難理解的地方在于給線程傳遞參數(shù)的時(shí)候,怎么找到Main函數(shù)。后面會(huì)做分析。
首先創(chuàng)建類:創(chuàng)建MyThread類,其中公有函數(shù)Main作為入口。這個(gè)類的傳教比較簡(jiǎn)單,成員函數(shù)只有一個(gè)cout語(yǔ)句,并不難。
class MyThread
{public:// 入口線程函數(shù)Mainvoid Main(){cout<<"MyThread Main:"<<name<<":"<<age<<endl;}string name;int age;
};
其次創(chuàng)建主函數(shù),在主函數(shù)立實(shí)例化對(duì)象,這個(gè)基礎(chǔ)知識(shí)了。
MyThread myth;myth.name = "zhoujielun";myth.age = 30;
接下來(lái)就是要創(chuàng)建線程并且傳遞參數(shù)了。創(chuàng)建線程的方法有兩種,
第一種使用調(diào)用庫(kù)函數(shù)的方法建立線程
//在這里要傳遞一個(gè)成員函數(shù),成員函數(shù)傳遞時(shí)通過(guò) 類名::函數(shù)名 這種方式去傳遞的。在這里我們還要加上&取地址符合,這樣傳進(jìn)去才是成員函數(shù)的指針。
//又因?yàn)槌蓡T函數(shù),this指針會(huì)指向該成員函數(shù)所在對(duì)象的起始地址,所以要傳遞當(dāng)前對(duì)象的地址。 &myth
thread th(&MyThread::Main,&myth); th.join();
第二種使用標(biāo)準(zhǔn)命名空間的方法創(chuàng)建一個(gè)線程
std::thread th;
th = std::thread(&MyThread::Main,&myth);
th.join();
傳遞參數(shù)的時(shí)候我個(gè)人有點(diǎn)難理解的,我在這里分享一下自己的理解:首先傳遞的參數(shù)是MyThread類里面的成員函數(shù)Main,需要使用MyThread::Main這種類名::函數(shù)名的方式傳遞進(jìn)去。在這里我們還要加上&取地址符合,這樣傳進(jìn)去才是成員函數(shù)的指針。又因?yàn)镸ain是成員函數(shù),this指針會(huì)指向該成員函數(shù)所在對(duì)象的起始地址,所以要傳遞當(dāng)前對(duì)象的地址。 &myth
? 完整代碼:
#include <iostream>
#include <thread>
#include <string>
#include <unistd.h>using namespace std;//使用成員函數(shù)作為線程的入口class MyThread
{public:// 入口線程函數(shù)Mainvoid Main(){cout<<"MyThread Main:"<<name<<":"<<age<<endl;}string name;int age;
};int main(int num,char* s[])
{MyThread myth;myth.name = "zhoujielun";myth.age = 30;//關(guān)于線程中參數(shù)傳遞的解釋//在這里要傳遞一個(gè)成員函數(shù),成員函數(shù)傳遞時(shí)通過(guò) 類名::函數(shù)名 這種方式去傳遞的。在這里我們還要加上&取地址符合,這樣傳進(jìn)去才是成員函數(shù)的指針。//又因?yàn)槌蓡T函數(shù),this指針會(huì)指向該成員函數(shù)所在對(duì)象的起始地址,所以要傳遞當(dāng)前對(duì)象的地址。 &myth//方法一 使用調(diào)用庫(kù)函數(shù)的方法建立線程thread th(&MyThread::Main,&myth); th.join();//方法二 使用標(biāo)準(zhǔn)命名空間的方法創(chuàng)建一個(gè)線程// std::thread th;// th = std::thread(&MyThread::Main,&myth); // th.join();return 0;
}