TGViewer
DotNetZoom DotNetZoom @dotnetzoom · 2.82K subscribers
Post #1168 2.71K

Forwarded from Software Philosophy

معرفی System.Threading.Channels

فرض
کنید سیستم ایمیل مارکتینگ شما قرار است یک میلیون کاربر را در حافظه لود کند و سپس برای همه‌ی آن‌ها ایمیل ارسال کند. از زمانی که شما این کاربرها را از دیتابیس لود می‌کنید هزینه بالایی بابت کوئری سنگین متحمل می‌شوید و همچنین بعد از لود کردن هم نگهداری این تعداد در حافظه باعث اشغال شدن مقدار زیادی از حافظه می‌شود. (هر چند عملیات با موفقیت انجام می‌شود ولی بهینه نیست!)
از طرفی هم اگر بخواهید مثلا هزار تا هزار تا این داده ها را لود و ارسال کنید، سرعت عملیات پایین می‌آید.

بهینه ترین روش ایجاد سیستمی است که همانند چرخه تولید به مصرف عمل کند. یعنی مصرف کننده داده صرفا داده‌هایی را از یک صف تعریف شده می‌گیرد و قسمت تولید کننده داده هم با استراتژی خاصی داده‌ها را تولید (از دیتابیس لود می‌کند) و داخل صف قرار می‌دهد و هر موقع کارش به اتمام رسید به مصرف کننده اعلام می‌کند تا دیگر منتظر صف نماند.

در اینجا چالش‌های زیادی مطرح می‌شود که در System.Threading.Channels این چالش‌ها مد نظر قرار گرفته شده است که برنامه نویس می‌تواند بر روی چنل (صف) داده قرار دهد (Write) و یا در جای دیگری از داده‌های صف استفاده کند (Read).

افزودن داده بر روی چنل
await channel.Writer.WriteAsync(item);

خواندن داده از چنل
channel.Reader.ReadAllAsync()

توضیحات تکمیلی را اینجا بخوانید:

https://virgool.io/@hamedhajiloo96/system-threading-channels-z1kx0mctp7gp

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.

#حامد_حاجیلو (http://bit.ly/2IVjfYD)

کانال تلگرام:
@SoftwarePhilosophy

________
ویرگول معرفی System.Threading.Channels معرفی سیستمی جهت پیاده سازی بهینه و ایمن صف Queue در برنامه نویسی
More from @dotnetzoom
  1. Dec 27, 2021امکانات LINQ در NET 6. ✅ ۱- امکان مشخص کردن مقدار پیش‌فرض در OrDefault* var item1 = list1.…
  2. Dec 6, 2021انتقال داده ها به واسطه Azure Service Bus امروزه سرعت انتقال داده‌ها از اهمیت بالایی برخور…
  3. Nov 29, 2021اضافه شدن قابلیت Temporal Table به EF Core 6 ➖ مایکروسافت در سال 2016 قابلیت Temporal Tabl…
  4. Nov 10, 2021همه چیز در مورد NET Core 6. دیروز نسخه رسمی NET Core 6. به همراه نسخه رسمی Visual Studio 2…
  5. Nov 10, 2021نسخه نهایی NET 6.0 منتشر شد. نسخه 6.0 دات نت به صورت طولانی مدت پشتیبانی میشود (LTS) و توس…
  6. Nov 8, 2021کنفرانس NET. Conf هر سال خبرهای هیجان‌انگیزی داره. امسال هم NET. خبر های خوب و جذابی داره…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →