2013-04-18 3 views
2

이것은 처음으로 boost thread 함수를 사용하는 것이고, 이전에는 다중 쓰레드로 작업하는 것에 대한 지식이 거의 없습니다. 나는 같은 함수에 두 개의 다른 변수를 전달할 수 있도록 초기 호출과 함께 함수의 두 번째 인스턴스를 실행하려고하는데, 이는 내 프로그램의 속도를 높이기를 바라고있다. 내가 가지고있는 코드는 내가boost :: thread의 함수에 인자를 건네줍니다.

'T *boost::get_pointer(const boost::scoped_ptr<T> &)' : could not deduce template argument for 'const boost::scoped_ptr<T> &' from 'const std::string' 

여기 스레드 생성

string firstPart = recText.substr(1,(subPart1-1)); 
string secondPart = recText.substr(subPart1,subPart1); 

boost::thread firstThread; 
boost::thread secondThread; 

firstThread = boost::thread(&Conversion::conversion,firstPart); 
secondThread = boost::thread(&Conversion::conversion,secondPart); 
firstThread.join(); 
secondThread.join(); 

편집

void Conversion::conversion(string _Part) 
{ 
int value_Part = 1; 
int valueShort = 0; 
int value = checkValue; 
if(value == value_Part) 
{ 
     // do stuff 
    } 
} 
+0

과 같이 Conversion 인스턴스에 대한 포인터를 전달해야합니다. 'Conversion :: conversion'은 어떻게 생겼습니까? – juanchopanza

+0

@juanchopanza 전체 함수가 꽤 길지만, 그것이 어떻게 정의되고 시작되는지 더 자세히 알고 싶다면 – user1704863

+1

'Conversion :: conversion'은 멤버 함수입니까? – juanchopanza

답변

3

멤버 함수 T는 부재 기능을 갖는 클래스 타입 (정규화 CV) T*, 내재적 첫번째 매개 변수를 사용. 예를 들어,

Conversion c; 
firstThread = boost::thread(&Conversion::conversion, &c, firstPart); 
+0

감사합니다. – user1704863

0

사용 boost::bind 다루는 코드의 조각이다라는 C2784 오류가 계속 알고 함께.

Conversion *conversion_obj_ptr = ... 
boost::thread firstThread; 
firstThread = boost::thread(boost::bind(&Conversion::conversion, conversion_obj_ptr, firstPart); 

이것은 Conversion :: conversion이 멤버 함수라고 가정합니다. Conversion :: conversion이 멤버 함수가 아닌 경우 conversion_obj_ptr 매개 변수를 생략하십시오.

편집

다른 사람들이 당신이 bind를 사용할 필요가 없습니다 주석으로, boost::thread 생성자가 당신을 위해 그렇게 할 것입니다.

http://www.boost.org/doc/libs/1_53_0/doc/html/thread/thread_management.html#thread.thread_management.thread.multiple_argument_constructor

+0

괜찮아요. * conversion_obj_ptr = – user1704863

+0

이후에 예상되는 내용이 확실하지 않습니다. 실제로 여기서 'bind'를 사용할 필요는 없습니다. – juanchopanza

+0

@PeterR - 생성자가 인수를 함께 바인딩합니다. –

관련 문제