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

नीचे

नींद के लिए WaitableTimer बनाम इसी तरह की शाखाएँ खोजें


DayGaykin ©   (2016-03-30 09:51) [0]

मैंने हाल ही में php-usleep का अध्ययन किया और सवाल उठता है कि उन्होंने इसे क्यों वाजिटेमर के माध्यम से लागू किया, और सामान्य नींद के माध्यम से नहीं (या 2 ^ 32 usec से अधिक की देरी के लिए एक नींद लूप):

https://github.com/php/php-src/blob/master/win32/time.c
इसके लिए स्पष्टीकरण क्या है?



DayGaykin ©   (2016-03-30 09:58) [1]

मैंने जल्दी कर दी। मैंने मिलि और माइक्रो-सेकंड को मिलाया, यह सब कुछ समझाता है।



DVM ©   (2016-03-30 14:11) [2]

यह केवल मिली या माइक्रोसेकंड की बात नहीं है। सबसे अधिक संभावना है, बस विंडोज के तहत वेफिटेमर अधिक सही तरीका है।



DayGaykin ©   (2016-03-30 16:37) [3]

मैं विस्तार से बताया



DayGaykin ©   (2016-03-30 16:37) [4]

मैं विस्तार से बताया



Pavia ©   (2016-03-30 17:22) [5]


> यह केवल मिली या माइक्रोसेकंड के बारे में नहीं है, सबसे अधिक संभावना है, यह सिर्फ है
> विंडोज के तहत वेफिटेमर अधिक सही तरीका है।

एपीसी में अधिक संभावना व्यापार।



DVM ©   (2016-03-30 22:16) [6]


> DayGaykin © (30.03.16 16: 37) [4]
> समझाया गया

ठीक है, यह स्पष्ट है कि लंबी नींद के अंतराल में, समय-समय पर लूप में कहा जाने वाला धागा जागने के लिए मजबूर करता है, जो कोड को पेज फ़ाइल पर अपलोड होने से रोकता है, उदाहरण के लिए। WaitForXXX बाधित नहीं है और किसी भी समय बाधित हो सकता है।



Pavia ©   (2016-03-31 08:47) [7]


> खैर, यह स्पष्ट है कि लंबी नींद के अंतराल पर
> समय-समय पर एक लूप में बुलाया जाता है ताकि धागा जाग सके,
> जो कोड को पेज फ़ाइल में अपलोड होने से रोकता है, उदाहरण के लिए।
> WaitForXXX हस्तक्षेप नहीं करता है और बाधित भी हो सकता है
> किसी भी समय।

और कहाँ मिला? MSDN के अनुसार, WaitForXXX और नींद की समान प्राथमिकता है। और विचार के अनुसार स्वैप के साथ उसी तरह काम करना चाहिए।
लेकिन WaitableTimer APC पर काम करता है, जो एक सीधा व्यवधान से जुड़ा है। और उनकी संख्या 10 000 प्रति सेकंड तक पहुंच सकती है।
मुझे लगता है कि वेटिटेमर एक्सएनएक्सएक्स माइक्रोसेकंड तक की सटीकता के साथ ठहराव का सामना कर सकता है।
लेकिन व्यवहार में, आपको देखने के लिए मापने की आवश्यकता है।



Игорь Шевченко ©   (2016-03-31 10:13) [8]

Pavia © (31.03.16 08: 47) [7]

"आप, सर, बकवास कर रहे हैं। और सबसे बुरी बात यह है कि आप जगह से बाहर और आत्मविश्वास से कहते हैं"



DVM ©   (2016-03-31 10:19) [9]


> पाविया © (31.03.16 08: 47) [7]


> और आपको यह कहां से मिला? यदि आप MSDN को मानते हैं, तो प्राथमिकता WaitForXXX है
> और नींद समान हैं।

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



DayGaykin ©   (2016-03-31 11:08) [10]


> DVM © (31.03.16 10: 19) [9]

पहले तर्क के बारे में: "छोटा अंतराल" 50 दिनों के बारे में है। प्रत्येक 50 दिनों में एक बार स्वैप से कोड उठाना बहुत महंगा नहीं है।

लिंक हैंडल में मैंने जो कोड प्रदान किया है वह एक स्थानीय चर है। मुझे यकीन नहीं है, लेकिन यह मुझे लगता है कि इसका मतलब यह है कि कोई भी किसी भी क्षण उसे बाधित नहीं करना चाहता है।
इसके अलावा, फंक्शन पैरामीटर int है (जहाँ तक मैं C में समझता हूँ, यह भी एक 32 बिट है), इसलिए नींद के लिए अंतराल को बहुत लंबा सेट करने से काम नहीं चलेगा।

इसलिए, मैं यह निष्कर्ष निकालता हूं कि टाइमर का उपयोग करने का कारण इसके अधिक विस्तार से है।

PHPAPI int usleep (अहस्ताक्षरित int useconds) { हाथ टाइमर; LARGE_INTEGER के कारण; Due.QuadPart = - (10 * (__int64) useconds); टाइमर = CreateWaitableTimer (NULL, TRUE, NULL); SetWaitableTimer (टाइमर, और देय, 0, NULL, NULL, 0); WaitForSingleObject (टाइमर, इन्फिनिट); CloseHandle (टाइमर); वापसी 0; }



Pavia ©   (2016-03-31 11:19) [11]


> "आप, श्रीमान, बकवास बात करते हैं। और सबसे बुरा, आप क्या कहते हैं
> स्पष्ट रूप से और आत्मविश्वास से "

मेरे पास अच्छे शिक्षक थे जो कभी गलती नहीं करते। ;-)



DVM ©   (2016-03-31 13:20) [12]


> DayGaykin © (31.03.16 11: 08) [10]
>


> पहले तर्क के बारे में: "छोटा अंतराल" लगभग है
> 50 दिन। एक बार स्वैप से कोड उठाने के लिए यह बहुत महंगा नहीं है
> 50 दिनों में।

आपको कुछ भी समझ नहीं आया। स्लीप वाले संस्करण में, आपके पास स्लीप (50 दिन) नहीं है। सामान्य लोग नींद (50 दिन) नहीं लिखते हैं? या मैं गलत हूं?

यह स्लीप (कुछ सेकंड या उससे कम) कहता है और उस स्लीप को लूप में डाल देता है। तदनुसार, यह धारा कई तरह के लकड़ी के लिए इन 50 दिनों के दौरान कई बार जाग जाएगी, हालांकि यह शांति से 50 दिनों के लिए सो सकता है और अनलोड हो सकता है। टाइमर संस्करण में, स्ट्रीम बिल्कुल 50 दिनों तक सोता है।

सामान्य तौर पर, 50 दिनों तक इंतजार करना बेवकूफी है, जो एक टाइमर है, जो एक पर्ची है।


> इसलिए, मैं यह निष्कर्ष निकालता हूं कि टाइमर का उपयोग करने का कारण
> इसके अधिक विस्तार से।
>

खैर, विशेष रूप से बड़ा नहीं है।
विंडोज के तहत, नैनोसेकंड तक सटीकता बनाए रखने का एक तरीका है, लेकिन एक कोर के पूर्ण भार की कीमत पर।



DayGaykin ©   (2016-03-31 16:23) [13]


> सामान्य लोग नींद (50 दिन) नहीं लिखते हैं? या मैं गलत हूं?

सामान्य लोग थोड़ा गणित का उपयोग करेंगे।



Inovet ©   (2016-03-31 17:36) [14]

> [13] DayGaykin © (31.03.16 16: 23)
> सामान्य लोग थोड़ा गणित लगाते हैं

मुझे और बताओ?



DayGaykin ©   (2016-03-31 17:44) [15]


> मुझे और बताओ?

क्यों? ट्रोल्स फ़ीड?



Inovet ©   (2016-03-31 17:47) [16]

> [15] DayGaykin © (31.03.16 17: 44)

और यहां ट्रोल कौन हैं? ऐसा लगता है कि अंतर स्पष्ट रूप से समझाया गया है। नींद () वास्तव में समय अंतराल का सामना करने के लिए नहीं बनाई गई है। इन उद्देश्यों के लिए इसे प्राप्त करने की ऐसी इच्छा कहाँ से आती है।



KSergey ©   (2016-04-01 10:08) [17]

> इनोवेट © (31.03.16 17: 47) [16]
> नींद () वास्तव में समय अंतराल का सामना करने के लिए डिज़ाइन नहीं की गई है।

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



DVM ©   (2016-04-01 10:28) [18]


> KSergey © (01.04.16 10: 08) [17]


> यदि आपको सभी एक्सएनयूएमएक्स दिनों के लिए सही ढंग से सो जाने की आवश्यकता है, तो एक पर्ची उपयुक्त है
> समाधान।

और हम 50 दिनों के लिए पर्ची के साथ कार्यक्रम को कैसे बाधित करेंगे? या हम एक छोटे से अंतराल के साथ एक चक्र में पर्ची स्पिन करेंगे?



KSergey ©   (2016-04-01 10:56) [19]

ध्यान से पढ़िए।
कार्य की शर्तों के अनुसार, हमें नींद को बाधित किए बिना सभी 50 दिनों में सो जाना चाहिए।
और क्या आपको परेशान करता है?



DVM ©   (2016-04-01 11:17) [20]


> KSergey © (01.04.16 10: 56) [19]


> कार्य की शर्तों के अनुसार, हमें बिना किसी रुकावट के सभी 50 दिनों के लिए सो जाना चाहिए
> नींद।

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



KSergey ©   (2016-04-01 12:14) [21]

> अधिक विश्वसनीय हैं,

नींद की अविश्वसनीयता () क्या है?



DVM ©   (2016-04-01 12:55) [22]


> नींद की अविश्वसनीयता () क्या है?

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

यहाँ इसकी कमियों के बारे में अधिक जानकारी:
https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms686298(v=vs.85).aspx



KSergey ©   (2016-04-01 13:14) [23]

किस बात में असुरक्षा?
क्या वह हमेशा काम नहीं करती है?

मैं अभी भी अपनी राय में हूं कि "एक्सएनयूएमएक्स दिनों पर सो जाओ" के लिए - नींद महान है। ध्यान दें, "कुछ के लिए प्रतीक्षा करें" नहीं, लेकिन "50 दिनों के लिए सो जाओ।"

किसी भी मामले में, यह जानकारीपूर्ण था, धन्यवाद।



Inovet ©   (2016-04-01 18:43) [24]

> [23] KSergey © (01.04.16 13: 14)
> "50 दिनों पर सो जाओ" - नींद बहुत अच्छी है

संवाद करने के लिए धन्यवाद, लेकिन मैं अपने आप से थोड़ा सही करूंगा: दूसरों को 50 दिनों के लिए अपना बेकार समय देने के लिए :)।



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

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

ऊपर





मेमोरी: 0.65 एमबी
समय: 0.022 c
15-1459036034
Kilkennycat
2016-03-27 02:47
2017.03.26
एक अच्छा मिमिक रोबोट। और जीवन में उद्देश्य भी पहचान है।


15-1459185260
d2pak
2016-03-28 20:14
2017.03.26
वीडियो स्ट्रीम बफर संगठन


15-1459502027
KSergey
2016-04-01 12:13
2017.03.26
विंडोज "बातूनी": एपीआई के माध्यम से एक पुरुष या महिला आवाज सीखते हैं?


15-1458782603
Kilkennycat
2016-03-24 04:23
2017.03.26
उपभोक्ता संरक्षण


4-1282048057
mc.fly
2010-08-17 16:27
2017.03.26
मेमोरी में बफर इमेज कैसे बनाएं? वीसीएल के बिना।





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