توابع به‌روزرسانی اتمی RenderScript، توابع به‌روزرسانی اتمی RenderScript، توابع به‌روزرسانی اتمی RenderScript، توابع به‌روزرسانی اتمی RenderScript

نمای کلی

برای به روز رسانی مقادیر به اشتراک گذاشته شده بین چندین رشته، از توابع زیر استفاده کنید. آنها اطمینان حاصل می کنند که مقادیر به صورت اتمی به روز می شوند، یعنی خواندن حافظه، به روز رسانی ها و نوشتن حافظه به ترتیب درست انجام می شود.

این توابع کندتر از معادل های غیر اتمی خود هستند، بنابراین فقط زمانی از آنها استفاده کنید که همگام سازی مورد نیاز است.

توجه داشته باشید که در RenderScript، کد شما احتمالاً در رشته‌های جداگانه اجرا می‌شود، حتی اگر به صراحت آنها را ایجاد نکرده باشید. زمان اجرا RenderScript اغلب اجرای یک هسته را در چندین رشته تقسیم می کند. به روز رسانی جهانی ها باید با توابع اتمی انجام شود. در صورت امکان، الگوریتم خود را تغییر دهید تا به طور کلی از آنها اجتناب کنید.

خلاصه

توابع
rsAtomicAdd علاوه بر نخ ایمن
rsAtomicAnd Thread-safe بیتی و
rsAtomicCas مقایسه و تنظیم ایمن نخ
rsAtomicDec کاهش ایمن نخ
rsAtomicInc افزایش ایمن نخ
rsAtomicMax حداکثر رزوه ایمن
rsAtomicMin حداقل رزوه ایمن
rsAtomicOr Thread-safe به صورت بیتی یا
rsAtomicSub تفریق بی خطر
rsAtomicXor Thread-safe bitwise انحصاری یا

توابع

rsAtomicAdd : افزودنی ایمن برای موضوع

int32_t rsAtomicAdd(Vatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicAdd(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش مقدار برای اضافه کردن
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی مقداری به مقدار adr اضافه می کند، یعنی *addr += value .

rsAtomicAnd : Thread-safe bitwise and

int32_t rsAtomicAnd(volatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicAnd(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به و با.
برمی گرداند
مقدار *addr قبل از عملیات.

Atomicly یک بیت و دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr &= value .

rsAtomicCas : مقایسه و تنظیم ایمن با موضوع

int32_t rsAtomicCas(volatile int32_t * addr, int32_t compareValue, int32_t newValue); در سطح 14 API اضافه شده است
uint32_t rsAtomicCas(volatile uint32_t * addr, uint32_t compareValue, uint32_t newValue); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار قابل مقایسه و جایگزینی در صورت قبولی آزمون.
مقایسه ارزش مقدار برای آزمایش *addr در برابر.
newValue ارزشی که در صورت قبولی آزمون باید بنویسید.
برمی گرداند
مقدار *addr قبل از عملیات.

اگر مقدار adr با compareValue مطابقت داشته باشد، newValue در adr نوشته می‌شود، یعنی if (*addr == compareValue) { *addr = newValue; } .

با بررسی اینکه مقدار بازگردانده شده توسط rsAtomicCas() compareValue است، می توانید بررسی کنید که مقدار نوشته شده است.

rsAtomicDec : کاهش ایمن موضوعی

int32_t rsAtomicDec(volatile int32_t * adr); در سطح 14 API اضافه شده است
int32_t rsAtomicDec(volatile uint32_t * adr); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس ارزش به کاهش.
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی یک را از مقدار adr کم می کند. این معادل rsAtomicSub (addr, 1) است.

rsAtomicInc : افزایش ایمن نخ

int32_t rsAtomicInc(volatile int32_t * addr); در سطح 14 API اضافه شده است
int32_t rsAtomicInc(volatile uint32_t * addr); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار به افزایش.
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی یک به مقدار adr اضافه می کند. این معادل rsAtomicAdd (addr, 1) است.

rsAtomicMax : حداکثر تاپ ایمن

int32_t rsAtomicMax (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
uint32_t rsAtomicMax(Vatile uint32_t * addr, uint32_t مقدار); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش مقایسه
برمی گرداند
مقدار *addr قبل از عملیات.

اتمی مقدار adr را به حداکثر *addr و مقدار تنظیم می کند، یعنی *addr = max(*addr, value) .

rsAtomicMin : حداقل موضوعی ایمن

int32_t rsAtomicMin (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
uint32_t rsAtomicMin(Vatile uint32_t * addr, uint32_t مقدار); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش مقایسه
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی مقدار adr را روی حداقل *addr و مقدار تنظیم می کند، یعنی *addr = min(*addr, value) .

rsAtomicOr : به صورت بیت ایمن رشته یا

int32_t rsAtomicOr(فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
int32_t rsAtomicOr(Vatile uint32_t * addr, uint32_t مقدار); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به یا با.
برمی گرداند
مقدار *addr قبل از عملیات.

یک یا دو مقدار را به صورت اتمی انجام دهید و نتیجه را در addr ذخیره کنید، یعنی *addr |= value .

rsAtomicSub : تفریق ایمن رشته

int32_t rsAtomicSub(volatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicSub(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش مقدار برای تفریق
برمی گرداند
مقدار *addr قبل از عملیات.

یک مقدار را به صورت اتمی از مقدار adr کم می کند، یعنی *addr -= value .

rsAtomicXor : انحصاری بیتی ایمن رشته یا

int32_t rsAtomicXor (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
int32_t rsAtomicXor(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به xor با.
برمی گرداند
مقدار *addr قبل از عملیات.

Atomicly یک xor بیتی از دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr ^= value .

،

نمای کلی

برای به روز رسانی مقادیر به اشتراک گذاشته شده بین چندین رشته، از توابع زیر استفاده کنید. آنها اطمینان حاصل می کنند که مقادیر به صورت اتمی به روز می شوند، یعنی خواندن حافظه، به روز رسانی ها و نوشتن حافظه به ترتیب درست انجام می شود.

این توابع کندتر از معادل های غیر اتمی خود هستند، بنابراین فقط زمانی از آنها استفاده کنید که همگام سازی مورد نیاز است.

توجه داشته باشید که در RenderScript، کد شما احتمالاً در رشته‌های جداگانه اجرا می‌شود، حتی اگر به صراحت آنها را ایجاد نکرده باشید. زمان اجرا RenderScript اغلب اجرای یک هسته را در چندین رشته تقسیم می کند. به روز رسانی جهانی ها باید با توابع اتمی انجام شود. در صورت امکان، الگوریتم خود را تغییر دهید تا به طور کلی از آنها اجتناب کنید.

خلاصه

توابع
rsAtomicAdd علاوه بر نخ ایمن
rsAtomicAnd Thread-safe بیتی و
rsAtomicCas مقایسه و تنظیم ایمن نخ
rsAtomicDec کاهش ایمن نخ
rsAtomicInc افزایش ایمن نخ
rsAtomicMax حداکثر رزوه ایمن
rsAtomicMin حداقل رزوه ایمن
rsAtomicOr Thread-safe به صورت بیتی یا
rsAtomicSub تفریق بی خطر
rsAtomicXor Thread-safe bitwise انحصاری یا

توابع

rsAtomicAdd : افزودنی ایمن برای موضوع

int32_t rsAtomicAdd(Vatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicAdd(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش مقدار برای اضافه کردن
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی مقداری به مقدار adr اضافه می کند، یعنی *addr += value .

rsAtomicAnd : Thread-safe bitwise and

int32_t rsAtomicAnd(volatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicAnd(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به و با.
برمی گرداند
مقدار *addr قبل از عملیات.

Atomicly یک بیت و دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr &= value .

rsAtomicCas : مقایسه و تنظیم ایمن با موضوع

int32_t rsAtomicCas(volatile int32_t * addr, int32_t compareValue, int32_t newValue); در سطح 14 API اضافه شده است
uint32_t rsAtomicCas(volatile uint32_t * addr, uint32_t compareValue, uint32_t newValue); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار قابل مقایسه و جایگزینی در صورت قبولی آزمون.
مقایسه ارزش مقدار برای آزمایش *addr در برابر.
newValue ارزشی که در صورت قبولی آزمون باید بنویسید.
برمی گرداند
مقدار *addr قبل از عملیات.

اگر مقدار adr با compareValue مطابقت داشته باشد، newValue در adr نوشته می‌شود، یعنی if (*addr == compareValue) { *addr = newValue; } .

با بررسی اینکه مقدار بازگردانده شده توسط rsAtomicCas() compareValue است، می توانید بررسی کنید که مقدار نوشته شده است.

rsAtomicDec : کاهش ایمن موضوعی

int32_t rsAtomicDec(volatile int32_t * adr); در سطح 14 API اضافه شده است
int32_t rsAtomicDec(volatile uint32_t * adr); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس ارزش به کاهش.
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی یک را از مقدار adr کم می کند. این معادل rsAtomicSub (addr, 1) است.

rsAtomicInc : افزایش ایمن نخ

int32_t rsAtomicInc(volatile int32_t * addr); در سطح 14 API اضافه شده است
int32_t rsAtomicInc(volatile uint32_t * addr); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار به افزایش.
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی یک به مقدار adr اضافه می کند. این معادل rsAtomicAdd (addr, 1) است.

rsAtomicMax : حداکثر تاپ ایمن

int32_t rsAtomicMax (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
uint32_t rsAtomicMax(Vatile uint32_t * addr, uint32_t مقدار); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش مقایسه
برمی گرداند
مقدار *addr قبل از عملیات.

اتمی مقدار adr را به حداکثر *addr و مقدار تنظیم می کند، یعنی *addr = max(*addr, value) .

rsAtomicMin : حداقل موضوعی ایمن

int32_t rsAtomicMin (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
uint32_t rsAtomicMin(Vatile uint32_t * addr, uint32_t مقدار); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش مقایسه
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی مقدار adr را روی حداقل *addr و مقدار تنظیم می کند، یعنی *addr = min(*addr, value) .

rsAtomicOr : به صورت بیت ایمن رشته یا

int32_t rsAtomicOr(فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
int32_t rsAtomicOr(Vatile uint32_t * addr, uint32_t مقدار); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به یا با.
برمی گرداند
مقدار *addr قبل از عملیات.

یک یا دو مقدار را به صورت اتمی انجام دهید و نتیجه را در addr ذخیره کنید، یعنی *addr |= value .

rsAtomicSub : تفریق ایمن رشته

int32_t rsAtomicSub(volatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicSub(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش مقدار برای تفریق
برمی گرداند
مقدار *addr قبل از عملیات.

یک مقدار را به صورت اتمی از مقدار adr کم می کند، یعنی *addr -= value .

rsAtomicXor : انحصاری بیتی ایمن رشته یا

int32_t rsAtomicXor (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
int32_t rsAtomicXor(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به xor با.
برمی گرداند
مقدار *addr قبل از عملیات.

Atomicly یک xor بیتی از دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr ^= value .

،

نمای کلی

برای به روز رسانی مقادیر به اشتراک گذاشته شده بین چندین رشته، از توابع زیر استفاده کنید. آنها اطمینان حاصل می کنند که مقادیر به صورت اتمی به روز می شوند، یعنی خواندن حافظه، به روز رسانی ها و نوشتن حافظه به ترتیب درست انجام می شود.

این توابع کندتر از معادل های غیر اتمی خود هستند، بنابراین فقط زمانی از آنها استفاده کنید که همگام سازی مورد نیاز است.

توجه داشته باشید که در RenderScript، کد شما احتمالاً در رشته‌های جداگانه اجرا می‌شود، حتی اگر به صراحت آنها را ایجاد نکرده باشید. زمان اجرا RenderScript اغلب اجرای یک هسته را در چندین رشته تقسیم می کند. به روز رسانی جهانی ها باید با توابع اتمی انجام شود. در صورت امکان، الگوریتم خود را تغییر دهید تا به طور کلی از آنها اجتناب کنید.

خلاصه

توابع
rsAtomicAdd علاوه بر نخ ایمن
rsAtomicAnd Thread-safe بیتی و
rsAtomicCas مقایسه و تنظیم ایمن نخ
rsAtomicDec کاهش ایمن نخ
rsAtomicInc افزایش ایمن نخ
rsAtomicMax حداکثر رزوه ایمن
rsAtomicMin حداقل رزوه ایمن
rsAtomicOr Thread-safe به صورت بیتی یا
rsAtomicSub تفریق بی خطر
rsAtomicXor Thread-safe bitwise انحصاری یا

توابع

rsAtomicAdd : افزودنی ایمن برای موضوع

int32_t rsAtomicAdd(Vatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicAdd(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش مقدار برای اضافه کردن
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی مقداری به مقدار adr اضافه می کند، یعنی *addr += value .

rsAtomicAnd : Thread-safe bitwise and

int32_t rsAtomicAnd(volatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicAnd(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به و با.
برمی گرداند
مقدار *addr قبل از عملیات.

Atomicly یک بیت و دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr &= value .

rsAtomicCas : مقایسه و تنظیم ایمن با موضوع

int32_t rsAtomicCas(volatile int32_t * addr, int32_t compareValue, int32_t newValue); در سطح 14 API اضافه شده است
uint32_t rsAtomicCas(volatile uint32_t * addr, uint32_t compareValue, uint32_t newValue); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار قابل مقایسه و جایگزینی در صورت قبولی آزمون.
مقایسه ارزش مقدار برای آزمایش *addr در برابر.
newValue ارزشی که در صورت قبولی آزمون باید بنویسید.
برمی گرداند
مقدار *addr قبل از عملیات.

اگر مقدار adr با compareValue مطابقت داشته باشد، newValue در adr نوشته می‌شود، یعنی if (*addr == compareValue) { *addr = newValue; } .

با بررسی اینکه مقدار بازگردانده شده توسط rsAtomicCas() compareValue است، می توانید بررسی کنید که مقدار نوشته شده است.

rsAtomicDec : کاهش ایمن موضوعی

int32_t rsAtomicDec(volatile int32_t * adr); در سطح 14 API اضافه شده است
int32_t rsAtomicDec(volatile uint32_t * adr); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس ارزش به کاهش.
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی یک را از مقدار adr کم می کند. این معادل rsAtomicSub (addr, 1) است.

rsAtomicInc : افزایش ایمن نخ

int32_t rsAtomicInc(volatile int32_t * addr); در سطح 14 API اضافه شده است
int32_t rsAtomicInc(volatile uint32_t * addr); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار به افزایش.
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی یک به مقدار adr اضافه می کند. این معادل rsAtomicAdd (addr, 1) است.

rsAtomicMax : حداکثر تاپ ایمن

int32_t rsAtomicMax (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
uint32_t rsAtomicMax(Vatile uint32_t * addr, uint32_t مقدار); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش مقایسه
برمی گرداند
مقدار *addr قبل از عملیات.

اتمی مقدار adr را به حداکثر *addr و مقدار تنظیم می کند، یعنی *addr = max(*addr, value) .

rsAtomicMin : حداقل Thread-safe

int32_t rsAtomicMin (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
uint32_t rsAtomicMin(Vatile uint32_t * addr, uint32_t مقدار); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش مقایسه
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی مقدار adr را روی حداقل *addr و مقدار تنظیم می کند، یعنی *addr = min(*addr, value) .

rsAtomicOr : به صورت بیت ایمن رشته یا

int32_t rsAtomicOr(فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
int32_t rsAtomicOr(Vatile uint32_t * addr, uint32_t مقدار); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به یا با.
برمی گرداند
مقدار *addr قبل از عملیات.

یک یا دو مقدار را به صورت اتمی انجام دهید و نتیجه را در addr ذخیره کنید، یعنی *addr |= value .

rsAtomicSub : تفریق ایمن رشته

int32_t rsAtomicSub(volatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicSub(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش مقدار برای تفریق
برمی گرداند
مقدار *addr قبل از عملیات.

یک مقدار را به صورت اتمی از مقدار adr کم می کند، یعنی *addr -= value .

rsAtomicXor : انحصاری بیتی ایمن رشته یا

int32_t rsAtomicXor (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
int32_t rsAtomicXor(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به xor با.
برمی گرداند
مقدار *addr قبل از عملیات.

Atomicly یک xor بیتی از دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr ^= value .

،

نمای کلی

برای به روز رسانی مقادیر به اشتراک گذاشته شده بین چندین رشته، از توابع زیر استفاده کنید. آنها اطمینان حاصل می کنند که مقادیر به صورت اتمی به روز می شوند، یعنی خواندن حافظه، به روز رسانی ها و نوشتن حافظه به ترتیب درست انجام می شود.

این توابع کندتر از معادل های غیر اتمی خود هستند، بنابراین فقط زمانی از آنها استفاده کنید که همگام سازی مورد نیاز است.

توجه داشته باشید که در RenderScript، کد شما احتمالاً در رشته‌های جداگانه اجرا می‌شود، حتی اگر به صراحت آنها را ایجاد نکرده باشید. زمان اجرا RenderScript اغلب اجرای یک هسته را در چندین رشته تقسیم می کند. به روز رسانی جهانی ها باید با توابع اتمی انجام شود. در صورت امکان، الگوریتم خود را تغییر دهید تا به طور کلی از آنها اجتناب کنید.

خلاصه

توابع
rsAtomicAdd علاوه بر نخ ایمن
rsAtomicAnd Thread-safe بیتی و
rsAtomicCas مقایسه و تنظیم ایمن نخ
rsAtomicDec کاهش ایمن نخ
rsAtomicInc افزایش ایمن نخ
rsAtomicMax حداکثر رزوه ایمن
rsAtomicMin حداقل رزوه ایمن
rsAtomicOr Thread-safe به صورت بیتی یا
rsAtomicSub تفریق بی خطر
rsAtomicXor Thread-safe bitwise انحصاری یا

توابع

rsAtomicAdd : افزودنی ایمن برای موضوع

int32_t rsAtomicAdd(Vatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicAdd(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش مقدار برای اضافه کردن
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی مقداری به مقدار adr اضافه می کند، یعنی *addr += value .

rsAtomicAnd : Thread-safe bitwise and

int32_t rsAtomicAnd(volatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicAnd(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به و با.
برمی گرداند
مقدار *addr قبل از عملیات.

Atomicly یک بیت و دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr &= value .

rsAtomicCas : مقایسه و تنظیم ایمن با موضوع

int32_t rsAtomicCas(volatile int32_t * addr, int32_t compareValue, int32_t newValue); در سطح 14 API اضافه شده است
uint32_t rsAtomicCas(volatile uint32_t * addr, uint32_t compareValue, uint32_t newValue); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار قابل مقایسه و جایگزینی در صورت قبولی آزمون.
مقایسه ارزش مقدار برای آزمایش *addr در برابر.
newValue ارزشی که در صورت قبولی آزمون باید بنویسید.
برمی گرداند
مقدار *addr قبل از عملیات.

اگر مقدار adr با compareValue مطابقت داشته باشد، newValue در adr نوشته می‌شود، یعنی if (*addr == compareValue) { *addr = newValue; } .

با بررسی اینکه مقدار بازگردانده شده توسط rsAtomicCas() compareValue است، می توانید بررسی کنید که مقدار نوشته شده است.

rsAtomicDec : کاهش ایمن موضوعی

int32_t rsAtomicDec(volatile int32_t * adr); در سطح 14 API اضافه شده است
int32_t rsAtomicDec(volatile uint32_t * adr); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس ارزش به کاهش.
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی یک را از مقدار adr کم می کند. این معادل rsAtomicSub (addr, 1) است.

rsAtomicInc : افزایش ایمن نخ

int32_t rsAtomicInc(volatile int32_t * addr); در سطح 14 API اضافه شده است
int32_t rsAtomicInc(volatile uint32_t * addr); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار به افزایش.
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی یک به مقدار adr اضافه می کند. این معادل rsAtomicAdd (addr, 1) است.

rsAtomicMax : حداکثر تاپ ایمن

int32_t rsAtomicMax (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
uint32_t rsAtomicMax(Vatile uint32_t * addr, uint32_t مقدار); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش مقایسه
برمی گرداند
مقدار *addr قبل از عملیات.

اتمی مقدار adr را به حداکثر *addr و مقدار تنظیم می کند، یعنی *addr = max(*addr, value) .

rsAtomicMin : حداقل موضوعی ایمن

int32_t rsAtomicMin (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
uint32_t rsAtomicMin(Vatile uint32_t * addr, uint32_t مقدار); در سطح 14 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش مقایسه
برمی گرداند
مقدار *addr قبل از عملیات.

به صورت اتمی مقدار adr را روی حداقل *addr و مقدار تنظیم می کند، یعنی *addr = min(*addr, value) .

rsAtomicOr : به صورت بیت ایمن رشته یا

int32_t rsAtomicOr(فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
int32_t rsAtomicOr(Vatile uint32_t * addr, uint32_t مقدار); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به یا با.
برمی گرداند
مقدار *addr قبل از عملیات.

یک یا دو مقدار را به صورت اتمی انجام دهید و نتیجه را در addr ذخیره کنید، یعنی *addr |= value .

rsAtomicSub : تفریق ایمن رشته

int32_t rsAtomicSub(volatile int32_t * addr, int32_t value); در سطح 14 API اضافه شده است
int32_t rsAtomicSub(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش مقدار برای تفریق
برمی گرداند
مقدار *addr قبل از عملیات.

یک مقدار را به صورت اتمی از مقدار adr کم می کند، یعنی *addr -= value .

rsAtomicXor : انحصاری بیتی ایمن رشته یا

int32_t rsAtomicXor (فرار int32_t * addr، int32_t مقدار); در سطح 14 API اضافه شده است
int32_t rsAtomicXor(volatile uint32_t * addr, uint32_t value); در سطح 20 API اضافه شده است
پارامترها
آدرس آدرس مقدار برای تغییر.
ارزش ارزش به xor با.
برمی گرداند
مقدار *addr قبل از عملیات.

Atomicly یک xor بیتی از دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr ^= value .