2012-07-25 4 views
6

그래서 제 질문은 사실이 여러 부분Poco C++ 라이브러리를 사용하면 데이터를 스레드로 전달할 수 있습니까? 마시고 스레딩 라이브러리 사용</p> <p>:

  1. 어떤 스레드에 데이터를 전달하는 (두 스레드 호출에와 이미 실행중인 스레드에 대한) 가능한 모든 방법입니다 .
  2. 귀하가 선호하는 방법과 그 이유는 무엇입니까? 이 방법을 사용하여 자신의 경험에 대한 추가 정보를 제공 할 수 있습니까?
  3. Applied Informatics (Poco의 저자)가 추천하는 방법은 무엇입니까? Applied Informatics가 제공 한 추가 문서가 스레드에 인수를 전달하는 개요가 있습니까?

난 이미 여기 봤는데 : 사전에

감사합니다 ... 새 스레드에 전달 인자의

답변

15

정식 방법 thread 엔트리 포인트로서 작성해야 할 Runnable 서브 클래스를 경유합니다. 예 :

class MyThread: public Poco::Runnable 
{ 
public: 
    MyThread(const std::string& arg1, int arg2): 
     _arg1(arg1), 
     _arg2(arg2) 
    { 
    } 

    void run() 
    { 
     // use _arg1 and _arg2; 
     //... 
    } 

private: 
    std::string _arg1; 
    int _arg2; 
}; 

//... 

MyThread myThread("foo", 42); 
Poco::Thread thread; 
thread.start(myThread); 
thread.join(); 

데이터를 이미 실행중인 스레드로 전달할 때 가장 좋은 해결책은 요구 사항에 따라 다릅니다. 일반적인 작업자 스레드 시나리오의 경우 Poco::NotificationQueue을 사용해보십시오. 설명이 포함 된 전체 샘플은 여기에서 확인할 수 있습니다. http://pocoproject.org/slides/090-NotificationsEvents.pdf

+2

Günter는 Applied Informatics의 창립자이며 Poco C++ Library의 프로젝트 리더입니다. 이 질문에 답하기 위해 시간을내어 주셔서 대단히 감사합니다. – Homer6

+0

이 게시물을 방문한 사람들에게 유용한 링크 인 것으로 나타났습니다. http://www.cs.bgu.ac.il/~spl111/PracticalSession09_-_Threads_Using_POCO – Homer6