دوال التحديث البسيط لـ RenderScript
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
نظرة عامة
لتعديل القيم المشتركة بين سلاسل محادثات متعدّدة، استخدِم الدوال أدناه.
فهي تضمن تحديث القيم بشكل كامل، بمعنى أن الذاكرة
تتم قراءتها والتحديثات وكتابة الذاكرة بالترتيب الصحيح.
هذه الدوال أبطأ من مكافئاتها غير الذرية، لذا لا تستخدمها إلا عند الحاجة إلى المزامنة.
في RenderScript، من المحتمل أن تعمل التعليمات البرمجية في سلاسل ترابط منفصلة على الرغم من أنك لم تنشئها بشكل صريح. غالبًا ما يقسم وقت تشغيل RenderScript تنفيذ نواة واحدة عبر خيوط متعددة. يجب أن يتم تعديل العموم العالمية باستخدام الدوال البسيطة. إن أمكن، تعديل الخوارزمية لديك لتجنبها تمامًا.
ملخّص
الدوال
rsAtomicAdd
: إضافة آمنة من خلال سلاسل المحادثات
المعلّمات
Adr | عنوان القيمة المطلوب تعديلها. |
value | المبلغ المطلوب إضافته |
يضيف تلقائيًا قيمة إلى القيمة عند الإضافة، أي *addr += value
.
rsAtomicAnd
: بروتوكول بت آمن على سلاسل المحادثات
المعلّمات
Adr | عنوان القيمة المطلوب تعديلها. |
value | القيمة بين ومع. |
يتم تنفيذ البيانات بشكل Atom على مستوى بت لقيمتين، مع تخزين النتيجة مرة أخرى في addr،
أي *addr &= value
.
rsAtomicCas
: مقارنة وإعداد آمن من خلال سلاسل المحادثات
المعلّمات
Adr | عنوان القيمة المطلوب مقارنتها واستبدالها في حال اجتياز الاختبار. |
قيمة المقارنة | القيمة التي يجب اختبارها *وفقًا لها. |
قيمة جديدة | القيمة التي يجب كتابتها إذا اجتاز الاختبار. |
إذا كانت القيمة في addr تطابق purchaseValue، تتم كتابة newValue بـ addr،
أي if (*addr == compareValue) { *addr = newValue; }
.
يمكنك التحقق من أن القيمة تمت كتابتها عن طريق التحقق من أن القيمة التي تم إرجاعها بواسطة rsAtomicCas() هي browseValue.
rsAtomicDec
: تقليل آمن من خلال سلاسل المحادثات
المعلّمات
Adr | عنوان القيمة المراد إنقاصها. |
يتم طرح واحد بشكل ذري من القيمة عند الجمع. يعادل ذلك rsAtomicSub(addr, 1)
.
rsAtomicInc
: زيادة آمنة لسلاسل المحادثات
المعلّمات
Adr | عنوان القيمة المطلوب إضافتها. |
يضيف Atom واحدًا إلى القيمة عند الإضافة. يعادل ذلك rsAtomicAdd(addr, 1)
.
rsAtomicMax
: الحد الأقصى الآمن من خلال سلاسل المحادثات
المعلّمات
Adr | عنوان القيمة المطلوب تعديلها. |
value | قيمة المقارنة. |
يضبط القيمة بشكل موجز في addr على الحد الأقصى *addr والقيمة، أي
*addr = max(*addr, value)
.
rsAtomicMin
: حد أدنى آمن لسلاسل المحادثات
المعلّمات
Adr | عنوان القيمة المطلوب تعديلها. |
value | قيمة المقارنة. |
يضبط القيمة بشكل موجز في addr على الحد الأدنى *addr والقيمة، أي
*addr = min(*addr, value)
.
rsAtomicOr
: Thread-safe bitwise أو
المعلّمات
Adr | عنوان القيمة المطلوب تعديلها. |
value | القيمة إلى أو مع. |
نفِّذ عدة قيم أو قيمتين على نطاق بت، مع تخزين النتيجة في addr،
أي *addr |= value
.
rsAtomicSub
: الطرح الآمن من خلال سلسلة المحادثات
المعلّمات
Adr | عنوان القيمة المطلوب تعديلها. |
value | المبلغ المطلوب طرحه |
تطرح قيمة بشكل ذري من القيمة عند الإضافة، أي *addr -= value
.
rsAtomicXor
: حصري على مستوى بت آمن على سلاسل المحادثات أو
المعلّمات
Adr | عنوان القيمة المطلوب تعديلها. |
value | قيمة إلى xor. |
يعمل بشكل Atom على تنفيذ xor لقيمتين على مستوى البت، مع تخزين النتيجة في addr،
أي *addr ^= value
.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2024-01-03 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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"]],["تاريخ التعديل الأخير: 2024-01-03 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]