2008-11-24 9 views
6

में वर्कर थ्रेड्स मैं रूबी + क्यूटी (सी ++ से दूर जाने की कोशिश कर रहा है ...)
दो खुले टुकड़ों को देखने के लिए एक्स सेकंड टाइमआउट की अनुमति देने के लिए, मुझे या तो चाहिए टाइमर या पृष्ठभूमि धागे में काम करते हैं।रुबी

पहिया को पुनर्निर्मित किए बिना इसे लागू करने का सबसे आसान तरीका क्या है?
रूबी धागे? क्यूटी धागे? क्यूटी टाइमर?

उत्तर

2

क्यूटी धागे/टाइमर या रूबी वाले लोगों का चयन करने का निर्णय शायद व्यक्तिगत है, लेकिन आपको याद रखना चाहिए कि रूबी धागे हरे हैं। इसका मतलब है कि वे रूबी दुभाषिया द्वारा कार्यान्वित किए जाते हैं और एकाधिक प्रोसेसर कोरों में स्केल नहीं कर सकते हैं। हालांकि, टाइमर के साथ एक साधारण मेमोरी गेम के लिए मैं अनुमान लगा रहा हूं कि आपको इसके बारे में चिंता करने की आवश्यकता नहीं है।

हालांकि कुछ हद तक असंबंधित, Midiator, मिडी उपकरणों के लिए एक रूबी इंटरफ़ेस Ruby threads to implement a timer का उपयोग करता है।

इसके अलावा, Leslie Viljoen's article पर एक नज़र डालें, वह कहता है कि रूबी के थ्रेड लॉक हो जाते हैं जब क्यूटी फॉर्म विजेट इनपुट के लिए इंतजार कर रहे हैं। वह क्यूटी टाइमर को लागू करने के लिए कुछ नमूना कोड भी प्रदान करता है (जो आप कर रहे हैं उसके लिए काफी आसान और अपरिवर्तनीय दिखते हैं)।

0

धन्यवाद।

QTimer :: सिंगलशॉट का उपयोग करके इसे हल किया। पर्याप्त - मेरे मामले में, हर बार दो टाइल्स प्रदर्शित होने पर एक बार टाइमर आग लगती है।

block=Proc.new{ Thread.pass } 
timer=Qt::Timer.new(window) 
invoke=Qt::BlockInvocation.new(timer, block, "invoke()") 
Qt::Object.connect(timer, SIGNAL("timeout()"), invoke, SLOT("invoke()")) 
timer.start(1) 

माणिक धागे काम करता है:

4

मैं जानता हूँ कि अगर यह सबसे अच्छा समाधान है, लेकिन न! अपनी जरूरतों के लिए प्रारंभ (एक्स) समायोजित करें।

+0

यह मेरे लिए बहुत आसान होगा ... +1 – mydoghasworms