天天看點

boost thread 類的非靜态函數作為線程函數

1測試例子

#include <iostream>

#include <string>

#include <boost/thread/thread.hpp>

void ThreadFunc()

{

std::cout << "Welcome to thread function" << std::endl;

}

int main(int argc, char* argv[])

boost::thread instance(&ThreadFunc);

instance.join();

return 0;

2 攜帶參數例子

#include <boost/bind.hpp>

void threadFunc(const char* pszContext)

std::cout << pszContext << std::endl;

char* pszContext = "[email protected]";

boost::thread thread1(boost::bind(&threadFunc, pszContext));

thread1.join();

3 類的非靜态函數作為線程函數

生産環境中經常需要通路類的私有成員,如果類的靜态函數作為線程函數,通過參數的方式傳遞極其不友善

#include <boost/function/function0.hpp>

class CThreadClass

public:

CThreadClass()

memset(m_szContext, 0x00, 1024);

std::cout << m_szContext << std::endl;

void StartThread()

strcpy_s(m_szContext, "Welcome to thread func\n");

boost::function0<void> f = boost::bind(&CThreadClass::ThreadFunc, this);

boost::thread thrd(f);

thrd.join();

private:

char m_szContext[1024];

};

CThreadClass instance;

instance.StartThread();

參考http://blog.csdn.net/zhuxiaoyang2000/article/details/6588031/

    本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1951940,如需轉載請自行聯系原作者

繼續閱讀