রেন্ডারস্ক্রিপ্ট পরমাণু আপডেট ফাংশন

ওভারভিউ

একাধিক থ্রেডের মধ্যে ভাগ করা মানগুলি আপডেট করতে, নীচের ফাংশনগুলি ব্যবহার করুন৷ তারা নিশ্চিত করে যে মানগুলি পারমাণবিকভাবে আপডেট করা হয়েছে, অর্থাৎ মেমরি পড়া, আপডেট করা এবং মেমরি লেখা সঠিক ক্রমে সম্পন্ন হয়েছে।

এই ফাংশনগুলি তাদের অ-পারমাণবিক সমতুল্যগুলির চেয়ে ধীর, তাই সিঙ্ক্রোনাইজেশনের প্রয়োজন হলেই এগুলি ব্যবহার করুন।

মনে রাখবেন রেন্ডারস্ক্রিপ্টে, আপনার কোড আলাদা থ্রেডে চলতে পারে যদিও আপনি স্পষ্টভাবে সেগুলি তৈরি করেননি। রেন্ডারস্ক্রিপ্ট রানটাইম প্রায়শই একাধিক থ্রেড জুড়ে একটি কার্নেলের সম্পাদনকে বিভক্ত করে। গ্লোবাল আপডেট করা পারমাণবিক ফাংশন দিয়ে করা উচিত। যদি সম্ভব হয়, তাদের সম্পূর্ণরূপে এড়াতে আপনার অ্যালগরিদম পরিবর্তন করুন।

সারসংক্ষেপ

ফাংশন
rsAtomicAdd থ্রেড-নিরাপদ সংযোজন
rsAtomicAnd থ্রেড-সেফ বিটওয়াইজ এবং
rsAtomicCas থ্রেড নিরাপদ তুলনা এবং সেট
rsAtomicDec থ্রেড-নিরাপদ হ্রাস
rsAtomicInc থ্রেড-নিরাপদ বৃদ্ধি
rsAtomicMax থ্রেড-নিরাপদ সর্বাধিক
rsAtomicMin থ্রেড-নিরাপদ সর্বনিম্ন
rsAtomicOr থ্রেড-নিরাপদ বিটওয়াইজ বা
rsAtomicSub থ্রেড-নিরাপদ বিয়োগ
rsAtomicXor থ্রেড-নিরাপদ বিটওয়াইজ এক্সক্লুসিভ বা

ফাংশন

rsAtomicAdd : থ্রেড-নিরাপদ সংযোজন

int32_t rsAtomicAdd(অস্থির int32_t * addr, int32_t মান); API স্তর 14 এ যোগ করা হয়েছে
int32_t rsAtomicAdd( উদ্বায়ী uint32_t * addr, uint32_t মান); API স্তর 20 এ যোগ করা হয়েছে
পরামিতি
addr যে মান পরিবর্তন করতে হবে তার ঠিকানা।
মান যোগ করার পরিমাণ।
রিটার্নস
অপারেশনের আগে *addr-এর মান।

পারমাণবিকভাবে addr এ মানের সাথে একটি মান যোগ করে, যেমন *addr += value

rsAtomicAnd : থ্রেড-সেফ বিটওয়াইজ এবং

int32_t rsAtomicAnd(অস্থির int32_t * addr, int32_t মান); API স্তর 14 এ যোগ করা হয়েছে
int32_t rsAtomicAnd(অস্থির uint32_t * addr, uint32_t মান); API স্তর 20 এ যোগ করা হয়েছে
পরামিতি
addr যে মান পরিবর্তন করতে হবে তার ঠিকানা।
মান মান এবং সঙ্গে.
রিটার্নস
অপারেশনের আগে *addr-এর মান।

পারমাণবিকভাবে একটি বিটওয়াইজ এবং দুটি মানের সঞ্চালন করে, ফলাফলটিকে addr এ সংরক্ষণ করে, যেমন *addr &= value

rsAtomicCas : থ্রেড-নিরাপদ তুলনা করুন এবং সেট করুন

int32_t rsAtomicCas(অস্থির int32_t * addr, int32_t compareValue, int32_t newValue); API স্তর 14 এ যোগ করা হয়েছে
uint32_t rsAtomicCas(অস্থির uint32_t * addr, uint32_t compareValue, uint32_t newValue); API স্তর 14 এ যোগ করা হয়েছে
পরামিতি
addr পরীক্ষায় উত্তীর্ণ হলে তুলনা এবং প্রতিস্থাপন করার মানটির ঠিকানা।
মান তুলনা করুন পরীক্ষার মান *এর বিপরীতে যোগ করুন।
নতুন মান পরীক্ষায় উত্তীর্ণ হলে মান লিখতে হবে।
রিটার্নস
অপারেশনের আগে *addr-এর মান।

যদি addr-এর মান compareValue-এর সাথে মেলে তাহলে newValue addr-এ লেখা হয়, অর্থাৎ if (*addr == compareValue) { *addr = newValue; }

rsAtomicCas() দ্বারা প্রত্যাবর্তিত মানটি compareValue কিনা যাচাই করে আপনি মানটি লেখা হয়েছে কিনা তা পরীক্ষা করতে পারেন।

rsAtomicDec : থ্রেড-নিরাপদ হ্রাস

int32_t rsAtomicDec(অস্থির int32_t * addr); API স্তর 14 এ যোগ করা হয়েছে
int32_t rsAtomicDec(অস্থির uint32_t * addr); API স্তর 20 এ যোগ করা হয়েছে
পরামিতি
addr মান হ্রাস করার ঠিকানা।
রিটার্নস
অপারেশনের আগে *addr-এর মান।

পারমাণবিকভাবে addr এ মান থেকে একটি বিয়োগ করে। এটি rsAtomicSub (addr, 1) এর সমতুল্য।

rsAtomicInc : থ্রেড-নিরাপদ বৃদ্ধি

int32_t rsAtomicInc(অস্থির int32_t * addr); API স্তর 14 এ যোগ করা হয়েছে
int32_t rsAtomicInc(অস্থির uint32_t * addr); API স্তর 20 এ যোগ করা হয়েছে
পরামিতি
addr মূল্য বৃদ্ধির ঠিকানা।
রিটার্নস
অপারেশনের আগে *addr-এর মান।

পারমাণবিকভাবে addr এ মানের সাথে একটি যোগ করে। এটি rsAtomicAdd (addr, 1) এর সমতুল্য।

rsAtomicMax : থ্রেড-নিরাপদ সর্বাধিক

int32_t rsAtomicMax(অস্থির int32_t * addr, int32_t মান); API স্তর 14 এ যোগ করা হয়েছে
uint32_t rsAtomicMax(উদ্বায়ী uint32_t * addr, uint32_t মান); API স্তর 14 এ যোগ করা হয়েছে
পরামিতি
addr যে মান পরিবর্তন করতে হবে তার ঠিকানা।
মান তুলনা মান।
রিটার্নস
অপারেশনের আগে *addr-এর মান।

পারমাণবিকভাবে addr-এ মান সর্বোচ্চ *addr এবং মান নির্ধারণ করে, যেমন *addr = max(*addr, value)

rsAtomicMin : থ্রেড-নিরাপদ সর্বনিম্ন

int32_t rsAtomicMin(অস্থির int32_t * addr, int32_t মান); API স্তর 14 এ যোগ করা হয়েছে
uint32_t rsAtomicMin(অস্থির uint32_t * addr, uint32_t মান); API স্তর 14 এ যোগ করা হয়েছে
পরামিতি
addr যে মান পরিবর্তন করতে হবে তার ঠিকানা।
মান তুলনা মান।
রিটার্নস
অপারেশনের আগে *addr-এর মান।

পারমাণবিকভাবে addr-এ মানটি ন্যূনতম *addr এবং মান নির্ধারণ করে, যেমন *addr = min(*addr, value)

rsAtomicOr : থ্রেড-সেফ বিটওয়াইজ বা

int32_t rsAtomicOr(অস্থির int32_t * addr, int32_t মান); API স্তর 14 এ যোগ করা হয়েছে
int32_t rsAtomicOr(অস্থির uint32_t * addr, uint32_t মান); API স্তর 20 এ যোগ করা হয়েছে
পরামিতি
addr যে মান পরিবর্তন করতে হবে তার ঠিকানা।
মান মান বা সঙ্গে.
রিটার্নস
অপারেশনের আগে *addr-এর মান।

পারমাণবিকভাবে একটি বিটওয়াইজ বা দুটি মান সঞ্চালন করুন, ফলাফলটিকে addr এ সংরক্ষণ করুন, অর্থাৎ *addr |= value

rsAtomicSub : থ্রেড-নিরাপদ বিয়োগ

int32_t rsAtomicSub(অস্থির int32_t * addr, int32_t মান); API স্তর 14 এ যোগ করা হয়েছে
int32_t rsAtomicSub( উদ্বায়ী uint32_t * addr, uint32_t মান); API স্তর 20 এ যোগ করা হয়েছে
পরামিতি
addr যে মান পরিবর্তন করতে হবে তার ঠিকানা।
মান বিয়োগ করার পরিমাণ।
রিটার্নস
অপারেশনের আগে *addr-এর মান।

পারমাণবিকভাবে addr-এর মান থেকে একটি মান বিয়োগ করে, যেমন *addr -= value

rsAtomicXor : থ্রেড-সেফ বিটওয়াইজ এক্সক্লুসিভ বা

int32_t rsAtomicXor(অস্থির int32_t * addr, int32_t মান); API স্তর 14 এ যোগ করা হয়েছে
int32_t rsAtomicXor(অস্থির uint32_t * addr, uint32_t মান); API স্তর 20 এ যোগ করা হয়েছে
পরামিতি
addr যে মান পরিবর্তন করতে হবে তার ঠিকানা।
মান সঙ্গে xor মান.
রিটার্নস
অপারেশনের আগে *addr-এর মান।

পারমাণবিকভাবে দুটি মানের বিটওয়াইজ xor সঞ্চালন করে, ফলাফলটিকে addr এ সংরক্ষণ করে, যেমন *addr ^= value