-1
我想封裝一個線程,因爲它是如下所示: http://antonym.org/2009/05/threading-with-boost---part-i-creating-threads.html多線程使用boost:編譯器錯誤
但不知何故,我甚至無法編譯我的程序。這:
/**
*
*/
void AcceptConnectionThread::start(int param)
{
m_thread = boost::thread(&AcceptConnectionThread::AcceptConnectionThreadRun, this, 0);
}
/**
*
*/
int AcceptConnectionThread::AcceptConnectionThreadRun()
{
return 0;
}
剛使我這個:
Description Resource Path Location Type required from `boost::_bi::bind_t<R, F, L>::result_type boost::_bi::bind_t<R, F, L>::operator()() [with R = void; F = int (*)(); L = boost::_bi::list2<boost::_bi::value<AcceptConnectionThread*>, boost::_bi::value<int> >; boost::_bi::bind_t<R, F, L>::result_type = void]’ ServerNetwork line 20, external location: /usr/include/boost/bind/bind_template.hpp C/C++ Problem
Description Resource Path Location Type required from ‘void boost::detail::thread_data<F>::run() [with F = boost::_bi::bind_t<void, int (*)(), boost::_bi::list2<boost::_bi::value<AcceptConnectionThread*>, boost::_bi::value<int> > >]’ ServerNetwork line 62, external location: /usr/include/boost/thread/detail/thread.hpp C/C++ Problem
Description Resource Path Location Type too many arguments to function ServerNetwork line 313, external location: /usr/include/boost/bind/bind.hpp C/C++ Problem
這是模板的構造函數,用於:
template <class F,class A1,class A2>
thread(F f,A1 a1,A2 a2):
thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1,a2)))
{
start_thread();
}
我真的沒有任何想法是什麼問題..
編輯:
無論如何,它的工作原理與此..但這種方式我不能傳遞任何參數..
/**
*
*/
void AcceptConnectionThread::start(int param)
{
m_thread = boost::thread(&AcceptConnectionThread::AcceptConnectionThreadRun);
}
,如果你改變'AcceptConnectionThreadRun'聲明,而不是採取對米? – didierc
@didierc本教程提供了「Worker :: start()方法生成將運行processQueue方法的線程。請注意我們如何傳入此作爲第一個綁定參數?因爲我們使用的是實例方法(而不是類方法或者規則函數),我們必須確保第一個參數是實例指針,N參數是線程函數的第一個實際參數,可以在其簽名中看到。 我不知道如何解決此問題..但它應該無論如何工作。任何猜測什麼可能導致這個問題? – displayname
疏忽。這個綁定操作符需要實例和傳遞給該方法的參數,但這裏有一個額外的參數'0',而不帶參數的方法。查看[this SO question](http://stackoverflow.com/questions/527413/how-boostfunction-and-boostbind-work)瞭解'boost :: bind'的細節。 – didierc