ওভারভিউ
একাধিক থ্রেডের মধ্যে ভাগ করা মানগুলি আপডেট করতে, নীচের ফাংশনগুলি ব্যবহার করুন৷ তারা নিশ্চিত করে যে মানগুলি পারমাণবিকভাবে আপডেট করা হয়েছে, অর্থাৎ মেমরি পড়া, আপডেট করা এবং মেমরি লেখা সঠিক ক্রমে সম্পন্ন হয়েছে।
এই ফাংশনগুলি তাদের অ-পারমাণবিক সমতুল্যগুলির চেয়ে ধীর, তাই সিঙ্ক্রোনাইজেশনের প্রয়োজন হলেই এগুলি ব্যবহার করুন।
মনে রাখবেন রেন্ডারস্ক্রিপ্টে, আপনার কোড আলাদা থ্রেডে চলতে পারে যদিও আপনি স্পষ্টভাবে সেগুলি তৈরি করেননি। রেন্ডারস্ক্রিপ্ট রানটাইম প্রায়শই একাধিক থ্রেড জুড়ে একটি কার্নেলের সম্পাদনকে বিভক্ত করে। গ্লোবাল আপডেট করা পারমাণবিক ফাংশন দিয়ে করা উচিত। যদি সম্ভব হয়, তাদের সম্পূর্ণরূপে এড়াতে আপনার অ্যালগরিদম পরিবর্তন করুন।
সারসংক্ষেপ
ফাংশন
rsAtomicAdd : থ্রেড-নিরাপদ সংযোজন
পরামিতি
addr | যে মান পরিবর্তন করতে হবে তার ঠিকানা। |
---|
মান | যোগ করার পরিমাণ। |
---|
রিটার্নস
অপারেশনের আগে *addr-এর মান। |
পারমাণবিকভাবে addr এ মানের সাথে একটি মান যোগ করে, যেমন *addr += value
।
rsAtomicAnd : থ্রেড-সেফ বিটওয়াইজ এবং
পরামিতি
addr | যে মান পরিবর্তন করতে হবে তার ঠিকানা। |
---|
মান | মান এবং সঙ্গে. |
---|
রিটার্নস
অপারেশনের আগে *addr-এর মান। |
পারমাণবিকভাবে একটি বিটওয়াইজ এবং দুটি মানের সঞ্চালন করে, ফলাফলটিকে addr এ সংরক্ষণ করে, যেমন *addr &= value
।
rsAtomicCas : থ্রেড-নিরাপদ তুলনা করুন এবং সেট করুন
পরামিতি
addr | পরীক্ষায় উত্তীর্ণ হলে তুলনা এবং প্রতিস্থাপন করার মানটির ঠিকানা। |
---|
মান তুলনা করুন | পরীক্ষার মান *এর বিপরীতে যোগ করুন। |
---|
নতুন মান | পরীক্ষায় উত্তীর্ণ হলে মান লিখতে হবে। |
---|
রিটার্নস
অপারেশনের আগে *addr-এর মান। |
যদি addr-এর মান compareValue-এর সাথে মেলে তাহলে newValue 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 | যে মান পরিবর্তন করতে হবে তার ঠিকানা। |
---|
মান | সঙ্গে xor মান. |
---|
রিটার্নস
অপারেশনের আগে *addr-এর মান। |
পারমাণবিকভাবে দুটি মানের বিটওয়াইজ xor সঞ্চালন করে, ফলাফলটিকে addr এ সংরক্ষণ করে, যেমন *addr ^= value
।