2012-07-25 19 views
6

तो मेरे सवाल का वास्तव में है कई भागों:पॉको सी ++ लाइब्रेरी का उपयोग करके, मैं डेटा को थ्रेड में कैसे पास कर सकता हूं?

पोको थ्रेडिंग लाइब्रेरी का उपयोग करना:

  1. क्या धागे के लिए डेटा पारित करने के लिए (दोनों धागा मंगलाचरण पर और एक पहले से ही चल रहा है थ्रेड के लिए) संभव तरीकों के सभी कर रहे हैं ।
  2. आपके द्वारा कौन सी विधियों को प्राथमिकता दी जाती है और क्यों? क्या आप इन तरीकों का उपयोग करके अपने अनुभव के बारे में कोई अतिरिक्त जानकारी प्रदान कर सकते हैं?
  3. एप्लाइड इन्फोर्मेटिक्स (पोको के लेखक) द्वारा किन तरीकों की सिफारिश की जाती है? क्या एप्लाइड इन्फोर्मेटिक्स द्वारा आपूर्ति की गई कोई अतिरिक्त दस्तावेज है जो धागे को तर्क पारित करने की रूपरेखा बताती है?

मैं यहाँ पहले से ही देखा है:

अग्रिम धन्यवाद ... एक नया धागा करने के लिए गुजर तर्कों की

उत्तर

15

विहित रास्ता रननेबल सबक्लास के माध्यम से आपको थ्रेड एंट्री पॉइंट के रूप में बनाना होगा। उदाहरण:

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

स्वयं से आदमी से। गुंटर एप्लाइड इंफॉर्मेटिक्स के संस्थापक और पोको सी ++ लाइब्रेरी पर एक परियोजना लीड है। इस सवाल का जवाब देने के लिए समय लेने के लिए, गुंटर, बहुत बहुत धन्यवाद! – Homer6

+0

इस पोस्ट में आने वाले लोगों के लिए, मुझे यह लिंक उपयोगी भी पाया गया: http://www.cs.bgu.ac.il/~spl111/PracticalSession09_-_Threads_Using_POCO – Homer6