نمای کلی
برای به روز رسانی مقادیر به اشتراک گذاشته شده بین چندین رشته، از توابع زیر استفاده کنید. آنها اطمینان حاصل می کنند که مقادیر به صورت اتمی به روز می شوند، یعنی خواندن حافظه، به روز رسانی ها و نوشتن حافظه به ترتیب درست انجام می شود.
این توابع کندتر از معادل های غیر اتمی خود هستند، بنابراین فقط زمانی از آنها استفاده کنید که همگام سازی مورد نیاز است.
توجه داشته باشید که در RenderScript، کد شما احتمالاً در رشتههای جداگانه اجرا میشود، حتی اگر به صراحت آنها را ایجاد نکرده باشید. زمان اجرا RenderScript اغلب اجرای یک هسته را در چندین رشته تقسیم می کند. به روز رسانی جهانی ها باید با توابع اتمی انجام شود. در صورت امکان، الگوریتم خود را تغییر دهید تا به طور کلی از آنها اجتناب کنید.
خلاصه
توابع
rsAtomicAdd : افزودنی ایمن برای موضوع
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | مقدار برای اضافه کردن |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی مقداری به مقدار adr اضافه می کند، یعنی *addr += value
.
rsAtomicAnd : Thread-safe bitwise and
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به و با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
Atomicly یک بیت و دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr &= value
.
rsAtomicCas : مقایسه و تنظیم ایمن با موضوع
پارامترها
آدرس | آدرس مقدار قابل مقایسه و جایگزینی در صورت قبولی آزمون. |
---|
مقایسه ارزش | مقدار برای آزمایش *addr در برابر. |
---|
newValue | ارزشی که در صورت قبولی آزمون باید بنویسید. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
اگر مقدار adr با compareValue مطابقت داشته باشد، newValue در adr نوشته میشود، یعنی if (*addr == compareValue) { *addr = newValue; }
.
با بررسی اینکه مقدار بازگردانده شده توسط rsAtomicCas() compareValue است، می توانید بررسی کنید که مقدار نوشته شده است.
rsAtomicDec : کاهش ایمن موضوعی
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی یک را از مقدار adr کم می کند. این معادل rsAtomicSub (addr, 1)
است.
rsAtomicInc : افزایش ایمن نخ
پارامترها
آدرس | آدرس مقدار به افزایش. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی یک به مقدار adr اضافه می کند. این معادل rsAtomicAdd (addr, 1)
است.
rsAtomicMax : حداکثر تاپ ایمن
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش مقایسه |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
اتمی مقدار adr را به حداکثر *addr و مقدار تنظیم می کند، یعنی *addr = max(*addr, value)
.
rsAtomicMin : حداقل موضوعی ایمن
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش مقایسه |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی مقدار adr را روی حداقل *addr و مقدار تنظیم می کند، یعنی *addr = min(*addr, value)
.
rsAtomicOr : به صورت بیت ایمن رشته یا
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به یا با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
یک یا دو مقدار را به صورت اتمی انجام دهید و نتیجه را در addr ذخیره کنید، یعنی *addr |= value
.
rsAtomicSub : تفریق ایمن رشته
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | مقدار برای تفریق |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
یک مقدار را به صورت اتمی از مقدار adr کم می کند، یعنی *addr -= value
.
rsAtomicXor : انحصاری بیتی ایمن رشته یا
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به xor با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
Atomicly یک xor بیتی از دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr ^= value
.
،
نمای کلی
برای به روز رسانی مقادیر به اشتراک گذاشته شده بین چندین رشته، از توابع زیر استفاده کنید. آنها اطمینان حاصل می کنند که مقادیر به صورت اتمی به روز می شوند، یعنی خواندن حافظه، به روز رسانی ها و نوشتن حافظه به ترتیب درست انجام می شود.
این توابع کندتر از معادل های غیر اتمی خود هستند، بنابراین فقط زمانی از آنها استفاده کنید که همگام سازی مورد نیاز است.
توجه داشته باشید که در RenderScript، کد شما احتمالاً در رشتههای جداگانه اجرا میشود، حتی اگر به صراحت آنها را ایجاد نکرده باشید. زمان اجرا RenderScript اغلب اجرای یک هسته را در چندین رشته تقسیم می کند. به روز رسانی جهانی ها باید با توابع اتمی انجام شود. در صورت امکان، الگوریتم خود را تغییر دهید تا به طور کلی از آنها اجتناب کنید.
خلاصه
توابع
rsAtomicAdd : افزودنی ایمن برای موضوع
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | مقدار برای اضافه کردن |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی مقداری به مقدار adr اضافه می کند، یعنی *addr += value
.
rsAtomicAnd : Thread-safe bitwise and
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به و با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
Atomicly یک بیت و دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr &= value
.
rsAtomicCas : مقایسه و تنظیم ایمن با موضوع
پارامترها
آدرس | آدرس مقدار قابل مقایسه و جایگزینی در صورت قبولی آزمون. |
---|
مقایسه ارزش | مقدار برای آزمایش *addr در برابر. |
---|
newValue | ارزشی که در صورت قبولی آزمون باید بنویسید. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
اگر مقدار adr با compareValue مطابقت داشته باشد، newValue در adr نوشته میشود، یعنی if (*addr == compareValue) { *addr = newValue; }
.
با بررسی اینکه مقدار بازگردانده شده توسط rsAtomicCas() compareValue است، می توانید بررسی کنید که مقدار نوشته شده است.
rsAtomicDec : کاهش ایمن موضوعی
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی یک را از مقدار adr کم می کند. این معادل rsAtomicSub (addr, 1)
است.
rsAtomicInc : افزایش ایمن نخ
پارامترها
آدرس | آدرس مقدار به افزایش. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی یک به مقدار adr اضافه می کند. این معادل rsAtomicAdd (addr, 1)
است.
rsAtomicMax : حداکثر تاپ ایمن
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش مقایسه |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
اتمی مقدار adr را به حداکثر *addr و مقدار تنظیم می کند، یعنی *addr = max(*addr, value)
.
rsAtomicMin : حداقل موضوعی ایمن
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش مقایسه |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی مقدار adr را روی حداقل *addr و مقدار تنظیم می کند، یعنی *addr = min(*addr, value)
.
rsAtomicOr : به صورت بیت ایمن رشته یا
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به یا با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
یک یا دو مقدار را به صورت اتمی انجام دهید و نتیجه را در addr ذخیره کنید، یعنی *addr |= value
.
rsAtomicSub : تفریق ایمن رشته
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | مقدار برای تفریق |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
یک مقدار را به صورت اتمی از مقدار adr کم می کند، یعنی *addr -= value
.
rsAtomicXor : انحصاری بیتی ایمن رشته یا
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به xor با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
Atomicly یک xor بیتی از دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr ^= value
.
،
نمای کلی
برای به روز رسانی مقادیر به اشتراک گذاشته شده بین چندین رشته، از توابع زیر استفاده کنید. آنها اطمینان حاصل می کنند که مقادیر به صورت اتمی به روز می شوند، یعنی خواندن حافظه، به روز رسانی ها و نوشتن حافظه به ترتیب درست انجام می شود.
این توابع کندتر از معادل های غیر اتمی خود هستند، بنابراین فقط زمانی از آنها استفاده کنید که همگام سازی مورد نیاز است.
توجه داشته باشید که در RenderScript، کد شما احتمالاً در رشتههای جداگانه اجرا میشود، حتی اگر به صراحت آنها را ایجاد نکرده باشید. زمان اجرا RenderScript اغلب اجرای یک هسته را در چندین رشته تقسیم می کند. به روز رسانی جهانی ها باید با توابع اتمی انجام شود. در صورت امکان، الگوریتم خود را تغییر دهید تا به طور کلی از آنها اجتناب کنید.
خلاصه
توابع
rsAtomicAdd : افزودنی ایمن برای موضوع
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | مقدار برای اضافه کردن |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی مقداری به مقدار adr اضافه می کند، یعنی *addr += value
.
rsAtomicAnd : Thread-safe bitwise and
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به و با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
Atomicly یک بیت و دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr &= value
.
rsAtomicCas : مقایسه و تنظیم ایمن با موضوع
پارامترها
آدرس | آدرس مقدار قابل مقایسه و جایگزینی در صورت قبولی آزمون. |
---|
مقایسه ارزش | مقدار برای آزمایش *addr در برابر. |
---|
newValue | ارزشی که در صورت قبولی آزمون باید بنویسید. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
اگر مقدار adr با compareValue مطابقت داشته باشد، newValue در adr نوشته میشود، یعنی if (*addr == compareValue) { *addr = newValue; }
.
با بررسی اینکه مقدار بازگردانده شده توسط rsAtomicCas() compareValue است، می توانید بررسی کنید که مقدار نوشته شده است.
rsAtomicDec : کاهش ایمن موضوعی
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی یک را از مقدار adr کم می کند. این معادل rsAtomicSub (addr, 1)
است.
rsAtomicInc : افزایش ایمن نخ
پارامترها
آدرس | آدرس مقدار به افزایش. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی یک به مقدار adr اضافه می کند. این معادل rsAtomicAdd (addr, 1)
است.
rsAtomicMax : حداکثر تاپ ایمن
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش مقایسه |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
اتمی مقدار adr را به حداکثر *addr و مقدار تنظیم می کند، یعنی *addr = max(*addr, value)
.
rsAtomicMin : حداقل Thread-safe
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش مقایسه |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی مقدار adr را روی حداقل *addr و مقدار تنظیم می کند، یعنی *addr = min(*addr, value)
.
rsAtomicOr : به صورت بیت ایمن رشته یا
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به یا با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
یک یا دو مقدار را به صورت اتمی انجام دهید و نتیجه را در addr ذخیره کنید، یعنی *addr |= value
.
rsAtomicSub : تفریق ایمن رشته
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | مقدار برای تفریق |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
یک مقدار را به صورت اتمی از مقدار adr کم می کند، یعنی *addr -= value
.
rsAtomicXor : انحصاری بیتی ایمن رشته یا
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به xor با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
Atomicly یک xor بیتی از دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr ^= value
.
،
نمای کلی
برای به روز رسانی مقادیر به اشتراک گذاشته شده بین چندین رشته، از توابع زیر استفاده کنید. آنها اطمینان حاصل می کنند که مقادیر به صورت اتمی به روز می شوند، یعنی خواندن حافظه، به روز رسانی ها و نوشتن حافظه به ترتیب درست انجام می شود.
این توابع کندتر از معادل های غیر اتمی خود هستند، بنابراین فقط زمانی از آنها استفاده کنید که همگام سازی مورد نیاز است.
توجه داشته باشید که در RenderScript، کد شما احتمالاً در رشتههای جداگانه اجرا میشود، حتی اگر به صراحت آنها را ایجاد نکرده باشید. زمان اجرا RenderScript اغلب اجرای یک هسته را در چندین رشته تقسیم می کند. به روز رسانی جهانی ها باید با توابع اتمی انجام شود. در صورت امکان، الگوریتم خود را تغییر دهید تا به طور کلی از آنها اجتناب کنید.
خلاصه
توابع
rsAtomicAdd : افزودنی ایمن برای موضوع
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | مقدار برای اضافه کردن |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی مقداری به مقدار adr اضافه می کند، یعنی *addr += value
.
rsAtomicAnd : Thread-safe bitwise and
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به و با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
Atomicly یک بیت و دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr &= value
.
rsAtomicCas : مقایسه و تنظیم ایمن با موضوع
پارامترها
آدرس | آدرس مقدار قابل مقایسه و جایگزینی در صورت قبولی آزمون. |
---|
مقایسه ارزش | مقدار برای آزمایش *addr در برابر. |
---|
newValue | ارزشی که در صورت قبولی آزمون باید بنویسید. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
اگر مقدار adr با compareValue مطابقت داشته باشد، newValue در adr نوشته میشود، یعنی if (*addr == compareValue) { *addr = newValue; }
.
با بررسی اینکه مقدار بازگردانده شده توسط rsAtomicCas() compareValue است، می توانید بررسی کنید که مقدار نوشته شده است.
rsAtomicDec : کاهش ایمن موضوعی
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی یک را از مقدار adr کم می کند. این معادل rsAtomicSub (addr, 1)
است.
rsAtomicInc : افزایش ایمن نخ
پارامترها
آدرس | آدرس مقدار به افزایش. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی یک به مقدار adr اضافه می کند. این معادل rsAtomicAdd (addr, 1)
است.
rsAtomicMax : حداکثر تاپ ایمن
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش مقایسه |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
اتمی مقدار adr را به حداکثر *addr و مقدار تنظیم می کند، یعنی *addr = max(*addr, value)
.
rsAtomicMin : حداقل موضوعی ایمن
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش مقایسه |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
به صورت اتمی مقدار adr را روی حداقل *addr و مقدار تنظیم می کند، یعنی *addr = min(*addr, value)
.
rsAtomicOr : به صورت بیت ایمن رشته یا
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به یا با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
یک یا دو مقدار را به صورت اتمی انجام دهید و نتیجه را در addr ذخیره کنید، یعنی *addr |= value
.
rsAtomicSub : تفریق ایمن رشته
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | مقدار برای تفریق |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
یک مقدار را به صورت اتمی از مقدار adr کم می کند، یعنی *addr -= value
.
rsAtomicXor : انحصاری بیتی ایمن رشته یا
پارامترها
آدرس | آدرس مقدار برای تغییر. |
---|
ارزش | ارزش به xor با. |
---|
برمی گرداند
مقدار *addr قبل از عملیات. |
Atomicly یک xor بیتی از دو مقدار را انجام می دهد و نتیجه را در addr ذخیره می کند، یعنی *addr ^= value
.