RenderScript के ऐटॉमिक अपडेट फ़ंक्शन
संग्रह की मदद से व्यवस्थित रहें
अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
खास जानकारी
एक से ज़्यादा थ्रेड के बीच शेयर की गई वैल्यू अपडेट करने के लिए, नीचे दिए गए फ़ंक्शन का इस्तेमाल करें.
इससे यह पक्का होता है कि वैल्यू एक साथ अपडेट की गई हों. इसका मतलब है कि मेमोरी को पढ़ने, अपडेट करने, और मेमोरी में लिखने की प्रोसेस सही क्रम में की गई हो.
ये फ़ंक्शन, अपने नॉन-एटॉमिक फ़ंक्शन के मुकाबले धीमे होते हैं. इसलिए, इनका इस्तेमाल सिर्फ़ तब करें, जब सिंक करने की ज़रूरत हो.
ध्यान दें कि RenderScript में, आपका कोड अलग-अलग थ्रेड में चल सकता है. भले ही, आपने उन्हें साफ़ तौर पर न बनाया हो. RenderScript के रनटाइम में, अक्सर एक कोर को कई थ्रेड में बांटकर चलाया जाता है. ग्लोबल वैल्यू को अपडेट करने के लिए, एटॉमिक फ़ंक्शन का इस्तेमाल करना चाहिए. अगर हो सके, तो इनसे पूरी तरह से बचने के लिए अपने एल्गोरिदम में बदलाव करें.
खास जानकारी
फ़ंक्शन
rsAtomicAdd
: थ्रेड-सेफ़ जोड़ना
पैरामीटर
addr | बदलाव करने के लिए वैल्यू का पता. |
मान | जोड़ने के लिए रकम. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
addr, यानी *addr += value
में मौजूद वैल्यू में एक साथ एक वैल्यू जोड़ता है.
rsAtomicAnd
: थ्रेड-सेफ़ बिटवाइज़ ऐंड
पैरामीटर
addr | बदलाव करने के लिए वैल्यू का पता. |
मान | वैल्यू के लिए और साथ में. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
यह फ़ंक्शन, दो वैल्यू के बीच बाइटवाइज़ ऐंड करता है. साथ ही, नतीजे को addr, यानी *addr &= value
में सेव करता है.
rsAtomicCas
: थ्रेड-सेफ़ तुलना और सेट करना
पैरामीटर
addr | वैल्यू का पता, जिसकी तुलना की जानी है और टेस्ट पास होने पर बदली जानी है. |
compareValue | *addr की जांच करने के लिए वैल्यू. |
newValue | टेस्ट पास होने पर लिखी जाने वाली वैल्यू. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
अगर addr में मौजूद वैल्यू, compareValue से मेल खाती है, तो addr में नई वैल्यू लिखी जाती है,
यानी if (*addr == compareValue) { *addr = newValue; }
.
यह जांचा जा सकता है कि वैल्यू लिखी गई है या नहीं. इसके लिए, यह देखें कि rsAtomicCas() फ़ंक्शन से मिली वैल्यू, compareValue है या नहीं.
rsAtomicDec
: थ्रेड-सेफ़ घटाना
पैरामीटर
addr | घटाई जाने वाली वैल्यू का पता. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
addr में मौजूद वैल्यू में से एक को एक बार में घटाता है. यह rsAtomicSub(addr, 1)
के बराबर है.
rsAtomicInc
: थ्रेड-सेफ़ इंक्रीमेंट
पैरामीटर
addr | जिस वैल्यू को बढ़ाना है उसका पता. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
addr पर मौजूद वैल्यू में एक जोड़ता है. यह rsAtomicAdd(addr, 1)
के बराबर है.
rsAtomicMax
: थ्रेड-सेफ़ मैक्सिमम
पैरामीटर
addr | बदलाव करने के लिए वैल्यू का पता. |
मान | तुलना करने की वैल्यू. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
addr पर वैल्यू को *addr और वैल्यू, यानी *addr = max(*addr, value)
में से सबसे ज़्यादा वैल्यू पर सेट करता है.
rsAtomicMin
: थ्रेड के हिसाब से कम से कम
पैरामीटर
addr | बदलाव करने के लिए वैल्यू का पता. |
मान | तुलना करने की वैल्यू. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
addr पर मौजूद वैल्यू को, *addr और वैल्यू में से सबसे कम वैल्यू पर सेट करता है. जैसे,
*addr = min(*addr, value)
.
rsAtomicOr
: थ्रेड-सेफ़ बिटवाइज़ या
पैरामीटर
addr | बदलाव करने के लिए वैल्यू का पता. |
मान | वैल्यू के लिए या उसमें. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
एक साथ दो वैल्यू पर बाइनरी ऑपरेशन करें और नतीजे को addr, यानी *addr |= value
पर सेव करें.
rsAtomicSub
: थ्रेड-सेफ़ घटाना
पैरामीटर
addr | बदलाव करने के लिए वैल्यू का पता. |
मान | घटाई जाने वाली रकम. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
addr, यानी *addr -= value
में मौजूद वैल्यू से किसी वैल्यू को एक साथ घटाता है.
rsAtomicXor
: थ्रेड-सेफ़ बिटवाइज़ एक्सक्लूज़िव या
पैरामीटर
addr | बदलाव करने के लिए वैल्यू का पता. |
मान | वह वैल्यू जिसे एक्सओआर करना है. |
रिटर्न
ऑपरेशन से पहले *addr की वैल्यू. |
यह फ़ंक्शन, दो वैल्यू के बीच बाइटवाइज़ एक्सओआर करता है. साथ ही, नतीजे को addr, यानी *addr ^= value
में सेव करता है.
इस पेज पर मौजूद कॉन्टेंट और कोड सैंपल कॉन्टेंट के लाइसेंस में बताए गए लाइसेंस के हिसाब से हैं. Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.
आखिरी बार 2025-02-10 (UTC) को अपडेट किया गया.
[[["समझने में आसान है","easyToUnderstand","thumb-up"],["मेरी समस्या हल हो गई","solvedMyProblem","thumb-up"],["अन्य","otherUp","thumb-up"]],[["वह जानकारी मौजूद नहीं है जो मुझे चाहिए","missingTheInformationINeed","thumb-down"],["बहुत मुश्किल है / बहुत सारे चरण हैं","tooComplicatedTooManySteps","thumb-down"],["पुराना","outOfDate","thumb-down"],["अनुवाद से जुड़ी समस्या","translationIssue","thumb-down"],["सैंपल / कोड से जुड़ी समस्या","samplesCodeIssue","thumb-down"],["अन्य","otherDown","thumb-down"]],["आखिरी बार 2025-02-10 (UTC) को अपडेट किया गया."],[],[]]