घर
Top.Mail.Ru Yandeks.Metrika
मंच: "मुख्य";
वर्तमान संग्रह: 2003.09.01;
डाउनलोड करें: [xml.tar.bz2];

नीचे

परास्नातक, मुझे बताओ! एक धारा होती है, जब दबाया जाता है, तब धरा बनाता है। कार्रवाई इसी तरह की शाखाएँ खोजें


Layner   (2003-08-18 15:17) [0]

ये क्रियाएं कभी-कभी कई ~ 400 प्रति दिन होती हैं, अर्थात 400 बटन क्लिक, कभी-कभी 1, n कैसे बनाते हैं। एक पाश में प्रवाह? क्या इस बहुत ही कोड को स्ट्रीम में सम्मिलित करना और इसे जितनी बार चाहें, 400, आदि में दोहराना संभव है? यानी यह पता चला है कि ch। धागा एक और धागा (जीटी) शुरू करता है?

प्रक्रिया Tf.Button1Click (प्रेषक: Tobject);
शुरू करना
GT: = TGoThread.Create (झूठी); // शुरू
GT.FreeOnTerminate: = सच;
Button1.Enabled: = गलत;
अंत;



Layner   (2003-08-18 15:25) [1]

एक अन्य प्रश्न, यदि संभव हो तो ^, तो अगली स्ट्रीम को कैसे स्थानांतरित करें सामान्य स्ट्रीम से। जीटी में चर? यदि, सार्वजनिक रूप से (या निजीकरण के माध्यम से), घोषणा करने के लिए, तो यह समझ में आता है।



Е-Моё имя   (2003-08-18 15:31) [2]

मेरी समझ में नीचो नहीं आया
मैं इसके लिए अपनी छुट्टी लूंगा



Layner   (2003-08-18 15:32) [3]

बल्कि, यह एक चर नहीं है, लेकिन यह कि जीटी पूरा हो गया है, और जीटी को फिर से प्रदर्शन करना संभव है, लेकिन विभिन्न मापदंडों के साथ।



Е-Моё имя   (2003-08-18 15:33) [4]

आपको मेरी अच्छी सलाह
प्रश्न फिर से पूछें
पहले लिखा हुआ पढ़ा



Layner   (2003-08-18 15:56) [5]

सामान्य तौर पर, एक प्रवाह से मैं एक धागा कह सकता हूं?



Verg   (2003-08-18 16:08) [6]

प्रक्रियाओं या विधियों को कहा जाता है, और थ्रेड्स बनाए जाते हैं।
एक धागा कुछ पैदा कर सकता है, एक धागा पैदा करने के लिए कुछ नहीं।
एक धागा दूसरा धागा बना सकता है।



Layner   (2003-08-18 16:30) [7]

इकाई Unit_thread; इंटरफ़ेस का उपयोग करता है विंडोज, संदेश, SysUtils, वेरिएंट, कक्षाएं, ग्राफिक्स, नियंत्रण, प्रपत्र, डायलॉग, StdCtrls, ComCtrls, DB, ADODB, ExtCtrls, FileCtrl; टाइप TGoThread = वर्ग (TThread) निजी प्रक्रिया AddStr; str: स्ट्रिंग; संरक्षित प्रक्रिया निष्पादन; ओवरराइड; अंत; कार्यान्वयन का उपयोग करता है मुख्य; प्रक्रिया TGoThread.Execute; वर i: पूर्णांक; शुरू करना i: = 1 से 200000 के लिए शुरू str: = IntToStr (i); सिंक्रनाइज़ (AddStr); अंत; अंत; प्रक्रिया TGoThread.AddStr; शुरू करना Memo1.Lines.Add (str); अंत; अंत।

ईवेंट को दबाकर, बनाएं और स्ट्रीम करें, मॉड्यूल मुख्य

प्रक्रिया Tf.Button1Click (प्रेषक: Tobject); शुरू करना GT: = TGoThread.Create (झूठी); // शुरू GT.FreeOnTerminate: = सच; अंत;

^ ^ यह वही है जो हमने शुरू किया और एक बार पूरे 1 स्ट्रीम को निष्पादित किया। उसने पूरा किया।

यह आवश्यक है कि थ्रेड ने 1 बार काम नहीं किया, लेकिन उदाहरण के लिए 10। और 10 क्रियाएं की जैसे कि मैंने जो कोड दिया था। 1 बटन दबाकर।

मुझे नहीं पता कि और कैसे समझा जाए, लेकिन मुझे इस कोड की तरह कुछ चाहिए (यह स्पष्ट है कि यह काम नहीं करेगा)

प्रक्रिया Tf.Button1Click (प्रेषक: Tobject); वर i: पूर्णांक; शुरू करना i: = 1 से 10 के लिए शुरू करते हैं GT: = TGoThread.Create (झूठी); // शुरू GT.FreeOnTerminate: = सच; अंत; अंत;



Layner   (2003-08-18 16:32) [8]

ये समानांतर धाराएँ नहीं हैं !! और जैसे ही 1 समाप्त हुआ, 2 शुरू हुआ, 2 समाप्त हुआ, 3 शुरू हुआ, आदि।



Verg   (2003-08-18 16:42) [9]

खैर, क्या समस्या है?
हमें केवल एक धागे की आवश्यकता है, क्योंकि "वे"
> समानांतर नहीं



> प्रक्रिया TGoThread.Execute;
> वर
> आई, जे: पूर्णांक;
> शुरू करो
for j: = 1 to 10 do // कितना किया जाना चाहिए और कितना
यदि समाप्त हो गया है तो बाहर निकलें

> i के लिए: = 1 से 200000 करते हैं
> str: = IntToStr (i);
> सिंक्रनाइज़ (AddStr);
> अंत;
>
> अंत;


लगता है कि आप गलत तरीके से एक प्रश्न बनाते हैं।
मुझे लगता है:
प्रवाह को कुछ एन कमांड करना होगा और फिर से कमांड का इंतजार करना होगा।
और?



Layner   (2003-08-18 16:55) [10]

Verg ©, यह मामला नहीं है, इसलिए मैं अपनी कार्यशील धारा में एक चक्र जोड़ूंगा और कोई समस्या नहीं है, लेकिन मैं इसे करना चाहता था, संक्षेप में, XML प्रारूप में फाइलें हैं, लेकिन यह कोई अंतर नहीं है। वे एक ही निर्देशिका में झूठ बोलते हैं। ऑपरेटर सुबह आता है, मुस्कुराता है, एक फाइल होती है, इसे फाइललिस्टबॉक्स में चुनता है, एक बटन दबाता है, और फाइल को पार्स किया जाता है। यदि निर्देशिका में कई फाइलें हैं, तो ऑपरेटर कई बार ऐसी घटना करता है। कभी-कभी बहुत सारी फाइलें होती हैं। या तत्काल छह महीने के लिए फ़ाइलों को पार्स करने की आवश्यकता है।
मैंने FileListBox में एक बहु-चयन किया, जो भी मैंने सीखा, उन सभी फ़ाइलों को स्वीकार करें और फिर ??? मेरे पास फाइलों की एक सूची है और वह यह है। मैं मुख्य धागा बनाना चाहता हूं, जो स्ट्रीम के बाद बच्चे की स्ट्रीम शुरू और शुरू करता है, जब तक कि सभी फाइलें संसाधित नहीं होती हैं।
हालाँकि ... हाँ, आप कर सकते हैं जैसा कि मैंने किया है, बस एक और चक्र जोड़ें, फाइलों द्वारा। यह आसान है। मैंने अलग तरीके से सोचा। प्रवाह-चक्र-चक्र नहीं। और चक्र-धारा-धारा।
लेकिन फिर भी, अगर अन्य विकल्प हैं, तो यह जानना दिलचस्प होगा ...



Verg   (2003-08-18 17:04) [11]

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

एक और बात, अगर आपको समानांतर में फाइलों के एक सेट को पार्स करने की आवश्यकता है। फिर आप फ़ाइलों की संख्या से ऐसी धाराएँ बनाते हैं, जो हर किसी को बताती हैं, उदाहरण के लिए, फ़ाइल का नाम और उन्हें लॉन्च करना ...



Layner   (2003-08-18 17:14) [12]

यह, एक बहुत ही आदिम (सरल) विषय पर, फ़ाइलों की संख्या से, समानांतर उपयोग करने का एक उदाहरण देखने के लिए Verg होगा ... वहाँ marcocantu स्रोत कोड हैं, लेकिन मैं इसे वहां नहीं पा सकता, अगर आपके पास यह है, तो मैं बहुत आभारी रहूंगा, शायद मदद से कुछ भी, प्रतिक्रिया पत्र में लिखेंगे। या यहाँ।



panov   (2003-08-18 17:21) [13]

साइट पर लेख पढ़ें।



Verg   (2003-08-18 17:52) [14]

TGoThread = वर्ग (TThread)
निजी
FFileName: स्ट्रिंग;
संरक्षित
प्रक्रिया निष्पादन; ओवरराइड;
सार्वजनिक
निर्माता बनाएँ (const AFNName: string);
अंत;

कार्यान्वयन
कंस्ट्रक्टर TGoThread.Create (const AFileName: string);
शुरू करना
विरासत में मिला (सच्चा);
FFileName: = AFileName;
FreeOnTeriminate: = true;
फिर से शुरू;
अंत;

प्रक्रिया TGoThread.Execute;
var F: system.text;
शुरू करना
system.Assign (F, FFileName);
कोशिश
रीसेट (एफ);
कोशिश
// खैर, यहाँ GoThread थ्रेड फ़ाइल को पार्स कर सकता है
आखिरकार
system.close (F);
अंत;
सिवाय
// पार्सिंग त्रुटियाँ
अंत;
अंत;

मान लीजिए कि मुख्य सूत्र ने किसी तरह फाइललिस्ट में फाइलों की एक सूची प्राप्त की: TStringList;

i: = 0 से FileList.Count-1 करते हैं
TGoThread.Create (फाइललिस्ट [I]);

सभी, "प्रक्रिया शुरू हो गई है" :)

निम्नलिखित प्रश्न का इरादा है: मुझे कैसे पता चलेगा कि इस सूची की सभी फाइलें संसाधित हैं (धाराओं ने काम किया है)?
यह भी बहुत सारे तरीके हैं, मुझे क्षमा करें, अब कोई समय नहीं है ...।



पन्ने: 1 पूरी शाखा

मंच: "मुख्य";
वर्तमान संग्रह: 2003.09.01;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.61 एमबी
समय: 0.068 c
1-1483
race1
2003-08-18 13:14
2003.09.01
tlistbox.getdata :)


9-1271
Zombik666
2003-02-28 10:19
2003.09.01
एक्सएनयूएमएक्स एक्सई


14-1550
Ketmar
2003-08-12 10:59
2003.09.01
टीवी ड्राइव!


3-1315
kostik78ua
2003-08-08 16:08
2003.09.01
खेत काटना


8-1512
Tytus
2003-05-05 18:08
2003.09.01
PlaySound





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский