<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سلمان عرب عامری</title>
        <link>https://virgool.io/feed/@salmanaa</link>
        <description>توسعه دهنده نرم افزار https://salmana.ir</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:33:20</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/3330/avatar/p5ban8.png?height=120&amp;width=120</url>
            <title>سلمان عرب عامری</title>
            <link>https://virgool.io/@salmanaa</link>
        </image>

                    <item>
                <title>اولین روز کاری تیم لید</title>
                <link>https://virgool.io/@salmanaa/%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D8%B1%D9%88%D8%B2-%DA%A9%D8%A7%D8%B1%DB%8C-%D9%85%D8%AF%DB%8C%D8%B1-%D9%81%D9%86%DB%8C-we4wpody4t5k</link>
                <description>این مطلب ترجمه آزادی از مقاله زیر است.https://www.theengineeringmanager.com/management-101/your-first-day-on-the-job/شروع اولین روز کاریتون به عنوان رهبر تیم رو تبریک می گم.اگر از بیرون سازمان اومدید، احتمالا سرگرم جلسات معارفه و راه اندازی میز کار (پسورد وای فای چیه؟) هستید و برای سومین بار رمزتون رو یادتون رفته. اگر از داخل شرکت ارتقا پیدا کردید، ممکنه احساس غرور کنید، یا ممکنه درباره نحوه تغییر روابط با همکارانتون نگران باشید. در واقع، حالا که مدیر اونا هستید، هنوز هم می تونید آخر هفته با بچه های شرکت بزنید بیرون؟بسته به اینکه چقدر زمان برای آماده شدن در اختیار داشته باشید، ممکنه برای هفته اولتون برنامه خاصی داشته باشید. با این وجود، برای بسیاری از مدیران جدید، این احتمال وجود داره که تصویر روشنی از آن چه که باید وقتی این نقش جدید رو دارید انجام بدید نداشته باشید. خروجی شما چیست؟ قبلا تیکت های جیرا بود و استقرار روی سرور مشتری، و حالا...کارکنان. حقیقت اینه که هیچ سازمانی در رویکرد مدیریتی با دیگران یکسان نیست. ممکنه چندین رییس داشتید که به شیوه های بسیار متفاوتی عمل می کردند: شاید یک مدیر ساکت و متفکر داشتید که در ارتباطات نوشتاری منسجم در مقایسه با تبادل چهره به چهره بهتر بود. یا شاید یک مدیر کارآفرین قوی داشتید که شجاع و پر انگیزه بود، اما کمی پر مشغله بود، یا شاید حتی مدیری داشتید که اصلا به طور دائم اونجا نبود (باور کنید، من روایت هایی در این باره شنیدم!). به طور خاص چه کاری باید انجام بدید تا موثر واقع بشید؟اول به ساختار نیاز دارید. بیایید ببینیم چطور می شه چارچوبی تنظیم کرد که در اون بتوانید در هفته کاری خودتون موفق بشید و قابلیت پیش بینی ایجاد کنید.خودتان را به تیمتون معرفی کنیدجلسه معرفی به صورت حضوری، و یا اگر کارکنان دورکار دارید، حداقل از طریق تماس ویدئویی باشه. در درجه اول سعی کنید این جلسه از طریق ایمیل یا اسلک نباشه. احتمال داره بعضی از کارکنان رو قبلا در فرآیند جذب ملاقات کرده باشید، اما حالا زمان شروع به ایجاد رابطه است.1- از اونها بخواهید تیم و آنچه روی آن کار می کنند توضیح دهند.2- از اون ها بپرسید چه کارهایی رو به راه هستند و چه کارهایی باید بهبود پیدا کنند؟شما شروع به کشف انواعی از اطلاعات در مورد تیم جدید خود خواهید کرد:- جزئیاتی درباره پروژه (ها)ی جاری و میزان شفافیت اهداف آن ها- دانش، یا سردرگمی(!) در مورد اینکه چه کسی در قبال تصمیمات خاص، مانند اولویت کار و نقشه راه پاسخگو است.- احساسی که آن ها از کار کردن در شرکت دارند- احساس آن ها از اینکه تیم در دپارتمان و شرکت چطور شناخته می شود- آن ها درباره پروژه جاری خود چقدر مشتاق هستند، و چه چیزی را در باره آن می پسندند یا نمی پسندند.بسته به احساس شما در باره افراد و محل کار، می تونید این کار رو به صورت انفرادی برای هر یک از کارکنان انجام بدید، یا بجای این کار، می تونید زمانی رو با کل تیم هماهنگ کنید. متوجه خواهید شد که وقتی افراد وضعیت جاری را شرح می دهند، مسائل و درگیری های جذابی، از روابط تا استرس و مسائل بین افراد و فراتر از آن می تواند بروز کند. این ها نقاط شروع خیلی خوبی برای شما هستند تا همکاری برای بهتر کردن اوضاع را شروع کنید. مطمئن شوید همه این ها را گردآوری کنید.با هر یک از اعضای تیم جلسه دو نفره بگذاریدجلسات دونفره مهمترین جلساتی هستند که شما با کارکنانتان دارید. آن ها نشست با اولویت، خصوصی، منظمی هستند که به شما و کارمندتان اجازه می دهند با گفتگوی صریح و آزاد در محیطی امن با یکدیگر توافق کنید. به هر کس حداقل یک ساعت زمان بدهید. ممکن است زمان زیادی به نظر برسد، اما اغلب اوقات به ویژه وقتی شما می خواهید یکدیگر را بهتر بشناسید این زمان به سادگی پر می شود. ممکن است به سازمانی وارد شوید که جلسات دو نفره بخشی از فرهنگ شرکت هستند، اما اگر اینطور نبود، از کارکنانتان بخواهید آن را امتحان کنند و ببینند چطور پیش می رود. این کار را به درستی اجرا کنید، چرا که این کار یک فرآیند ضروری است.جهت آماده کردن خودتان برای این جلسات دو نفره، باید جایی را برای ضبط اطلاعات تعریف کنید. بنابراین...برای هر فرد در تیمتان یک سند خصوصی ایجاد کنید و آن را با وی به اشتراک بگذاریدسند خصوصی راه عالی برای ضبط آنچه در جلسه دو نفره شما بحث شده است و گردآوری فعالیت هایی که شما یا کارمند شما باید انجام دهند، و یادداشت موارد مورد بحث در طول هفته جلوتر از زمان آن ها است. عادت به یادداشت برداری در شرایط مختلف مفید است. همانطور که با کارکنان خود آشنا می شوید، می توانید راحت تر قضاوت کنید کدام مسائل را باید فورا مطرح کنید و در مقابل کدام موارد را باید یادداشت کنید و تا گفتگوی خصوصی دو نفره به تعویق بیندازید.نرم افزاری که برای این کار استفاده می کنید می تواند متنوع باشد، اما شرکت فعلی من از گوگل درایو استفاده می کند، بنابراین من این اسناد را آنجا قرار می دهم و با نشانی ایمیل کارمندان به اشتراک می گذارم. همچنین در گوگل درایو شما می توانید نظر ثبت کنید و فعالیت هایی را به اسناد موجود در گوگل درایو انتساب دهید.جلسه دو نفره هفتگی با مدیرتان ترتیب دهیدمنتظر نمانید این موضوع از بالا به پایین اتفاق بیفتد، آن را از پایین به بالا انجام دهید. فرآیند ساختن سند خصوصی را بین خود ومدیرتان تکرار کنید و آن را دقیقا به همان طریق که برای کارکنانتان استفاده می کردید به کار ببرید. ممکن است متوجه شوید مدیر شما هیچ وقت به آن نگاه نمی کند، یا یادداشت های کاغذی خود را ترجیح می دهد، اما شما همچنان می توانید برای جلساتتان و گرد آوردن فعالیت ها از آن یادداشت ها استفاده کنید.بعلاوه، زمان بندی این جلسه در زمان تاثیر گذار مفید است. تنظیم جلسه در روز شنبه اجازه می دهد برای هفته پیش رو آینده نگری داشته باشید و این می تواند به پوشش نکات استراتژیکی که می توانید در روزهای آینده آن ها را پیاده کنید کمک کند. در مقابل جلسات آخر هفته می تواند برای در نظر گرفتن هفته سپری شده، و بیشتر گذشته نگرانه مفید باشد. بسته به این که بخواهید چطور عمل کنید تصمیم کاملا با شماست.از وضعیت فعلی مطلع شویداز مدیر خود بخواهید کجا می توانید ارزیابی های سال قبل یا بین سال همه کارکنانتان پیدا کنید. وقتی آن ها را گرفتید، بخوانید تا بتوانید  بفهمید هر کس در تیم شما چطور کار می کند. آیا آن ها بخوبی کار می کنند؟ آیا آن ها تلاش می کنند بهتر شوند؟ آیا آن ها نگرانی هایی دارند که به آن ها فشار بیاورد؟ برای چه اهدافی کار می کنند، آیا هیچ هدفی وجود دارد؟ این ها موضوعات خوبی برای مکالمات دو نفره شماست.چرا همه این کارها را انجام می دهیم؟ساده است: شما شروع می کنید به پیاده سازی چارچوبی که به عنوان مدیر در آن عمل می کنید:- تعاملات غیر رسمی مکرر چهره به چهره- برنامه ریزی جلسات منظم خصوصی هفته ای یک بار- بررسی عملکردهای سالانه یا دوره های کمتر- درک اهداف گزارش های مستقیمتان، تا بتوانید آن ها را تسهیل کنید و به رشد آن ها کمک کنید.دفعه بعد به صورت عمیق تر به جلسات دو نفره می پردازیم و یک تمرین با عنوان Contracting را بررسی می کنیم، که راهی عالی برای شروع ارتباط گیری شما با گزارش های مستقیمتان است.</description>
                <category>سلمان عرب عامری</category>
                <author>سلمان عرب عامری</author>
                <pubDate>Fri, 12 Jul 2024 21:24:14 +0330</pubDate>
            </item>
                    <item>
                <title>کدوم پایگاه داده - قسمت اول ACID</title>
                <link>https://virgool.io/@salmanaa/%DA%A9%D8%AF%D9%88%D9%85-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-acid-wis045vrtodo</link>
                <description>از این پس مطالبم رو در سایت خودم هم منتشر می کنم. خوشحال می شم اونجا رو هم ببینید. https://salmana.irچند سال قبل به طور کلی یا باید اطلاعات رو توی فایل ذخیره می کردی یا از سیستم های پایگاه داده مثل mysql و mssql و یا حتی بعضا access استفاده می کردی. با ظهور nosql و تضعیف برخی قواعد ACID حالا دیگه انبوهی از سیستم های پایگاه داده وجود دارند که بعضی موقع ها تو اینکه از کدوم باید استفاده کنیم می مونیم. باید توجه داشت هر سیستم پایگاه داده برای هدف خاصی طراحی شده و نوع داده ورودی و روش پرس و جوی متفاوتی ممکنه داشته باشه. توی این مجموعه مطالب سعی می کنیم لیست پایگاه داده ها رو بیاریم و ببینیم هر کدوم چه نوع ذخیره سازی دارن و برای چه کاری مناسب هستند. البته که با توجه به انبوه سیستم ها ممکنه بعضی از اون ها از قلم افتاده باشند که به مرور با کمک شما تکمیل می کنیم.اصول ACID چیه و چرا باید رعایت بشن؟این قواعد در پایگاه های داده سنتی الزاما باید رعایت بشوند تا پایگاه داده به درستی وظیفه خودش رو انجام بده و معمولا پایگاه های داده noSQL همین قواعد رو تضعیف می کنن تا به عملکرد بهتری برسند.وقتی شما یک سامانه بانکی دارید که باید در مقابل خرابی بسیار مقاوم باشه و امنیت و صحت اطلاعات خیلی مهم هستن، نمی تونیم هیچ کدوم از قواعد ACID شامل اتمیک بودن، سازگاری، تفکیک تراکنش ها و پایداری رو تضعیف کنیم. اتمیک بودن (Atomic): یعنی یا کار انجام بشه یا نشه. یعنی مثلا وقتی شما 100 تومن از حساب علی به حساب حسن ریختی یا نباید 100 تومن از حساب علی کم بشه یا اینکه باید این 100 تومن به حساب حسن بره. نمی شه از حساب نفر اول بره بیرون ولی به حساب نفر دوم نره.سازگاری (Consistency): یعنی باید قواعد جامعیتی که توی سیستم تعریف کردیم یا منطقا وجود دارند حتما روی داده اعمال بشه. مثلا حداقل انتقال وجه باید 10000 تومان باشه و نباید تراکنشی که کمتر از این منتقل می کنه داشته باشیم. یا اینکه مثلا جدول الف با کلید خارجی به جدول ب وصل هست و حتما هر سطری در جدول ب باید به سطری در جدول آ وصل باشه. مثلا هر مشتری حداقل باید یک حساب بانکی داشته باشه. اگر حساب بانکی داشته باشیم که به هیچ مشتری وصل نیست اینجا صحت سامانه نقض شده.تفکیک (Isolation): یعنی تراکنش ها وسط کار نتونن محتوای همدیگه رو ببینن. مثلا شما داری صد تومن از حساب علی بر میداری که به حساب حسن بریزی. وقتی صد تومن از حساب علی برداشتی یه تراکنش دیگه میاد موجودی علی رو می گیره می بینه صد تومن کم شده و روی همون حساب کارش رو جلو می بره. در حالی که در ادامه تراکنش اول موفق نمی شه پول رو به حساب حسن بریزه و صد تومن رو به حساب علی بر می گردونه. اینجا هست که محاسبات سامانه کلا اشتباه می شه.پایداری (Durability): یعنی وقتی کار یک تراکنش تموم شد دیگه تا موقعی که ما خودمون تغییری توی داده ها ندادیم باید تغییرات تراکنش توی سیستم بمونه. یعنی اگر توسط تراکنش ما موجودی علی شد 900 تومن، فردا اومدیم موجودی گرفتیم باید همون 900 تومن بمونه مگر اینکه تا فردا یه تراکنش دیگه ای بزنه و موجودی خودش رو کم یا زیاد کنه.آیا رعایت این اصول سخته؟رعایت این قواعد برای پایگاه داده بار زیادی داره. مثلا هر بر که شما در پایگاه تغییری می دهید سیستم باید توی رکوردهای لاگ این کار شما رو ثبت کنه تا اگر به هر دلیلی مثلا قطعی برق خرابی اتفاق افتاد بتونه بعد از بالا اومدن، لیست کارهای نیمه انجام شده رو استخراج کنه و همه چیز رو به شرایط قبل خرابی برگردونه.حالا یه پایگاه داده رو فرض کنید که هزاران رکورد در لحظه توی اون درج می شه. یا برای اینکه تراکنش ها توی کار هم دخالت نکنن معمولا از قفل کردن استفاده می شه اینطوری که شما وقتی می خوای روی یک رکورد بنویسی این رکورد قفل می شه و هر تراکنش دیگه ای که بخواد این رکورد رو بخونه باید صبر کنه تا شما کار نوشتنت تموم بشه. مدیریت این تعداد قفل و بن بست هایی که این وسط رخ می ده کار بسیار هزینه بر و سختیه. (یعنی دو تراکنش یا بیشتر منتظر هستن که کار طرف مقابل تموم بشه و اینطوری هیچ کدوم کارشون تموم نمیشه و سیستم گیر می کنه. برای مدیریت این حالت کلی روش های مدیریت بن بست پیاده سازی شده)اما آیا واقعا اینقدر حساسیت لازمه؟ توی بعضی سامانه ها مثل بانک و ... بله ولی خیلی جاها میشه از بعضی از این خواسته ها کوتاه بیاییم و در عوضش بتونیم کارایی بیشتری از سیستم بگیریم. اینجاست که پای سیستم های noSql به سامانه ها باز می شه.</description>
                <category>سلمان عرب عامری</category>
                <author>سلمان عرب عامری</author>
                <pubDate>Tue, 08 Sep 2020 08:35:48 +0430</pubDate>
            </item>
                    <item>
                <title>زبان برنامه نویسی V ؟</title>
                <link>https://virgool.io/coderlife/%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-v-qjtofqruscuu</link>
                <description>لوگوی رپوزیتوری Vlangاز این پس مطالبم رو در سایت خودم هم منتشر می کنم. خوشحال می شم اونجا رو هم ببینید. https://salmana.irداشتم در گیت هاب قدم می زدم که به ریپوزیتوری زبان v برخورد کردم. با خودم گفتم چه آدمای بیکاری که نشستن و با این همه زبان برنامه نویسی یه زبان دیگه درست کردند.پس مقداری در موردش مطالعه کردم تا ببینم واقعا طراحش چه مزیتی رو در این زبان قرار داده که باقی زبان ها ارائه ندادند. این کامپایلر تحت  مجوز MIT به صورت متن باز منتشر شده.این زبان در مراحل توسعه اولیه قرار داره و هنوز خیلی از امکانات در اون پیاده نشده. ولی برای امتحان تو این ایام قرنطینه بد نیست. در این مسیر می تونید دانلود و مطالعه کنید : https://vlang.ioبه طور خلاصه هدف از طراحی این کامپایلر جمع آوری مزایای زبان های go، rust، c و ... بیان شده است.سر خط امکانات مورد ادعای این کامپایلر به این شرح هست:۱- شیب ملایم یادگیری. ظرف نیم ساعت می شه با این زبان آشنا شد.۲- کد ساده، خوانا و با قابلیت نگهداری مناسب.۳- قابل استفاده در طیف وسیعی از زمینه ها مثل برنامه نویسی سیستم، توسعه وب، توسعه بازی، واسط کاربری، موبایل، علم داده، سیستم های تعبیه شده و ...۴- سرعت قابل رقابت با C، سریال سازی توکار، کامپایل به باینری های نیتیو بدون وجود هر نوع وابستگی.۵- امکان پیاده سازی یک وب سرور  ساده با حجم فقط ۶۵ کیلوبایت۶- سرعت کامپایل سریع. بین ۱۰۰ هزار تا ۱.۲ میلیو خط کد در هر ثانیه با هر هسته سی پی یو۷- کد امن بدلیل نداشتن هیچمقدار (null)، نداشتن متغیرهای سراسری، نداشتن مقادیر تعریف نشده (undefined) و ...۸- پیاده سازی شده با زبان go در نسخه های قبلی و نسخه فعلی قابل کامپایل باخود V۹- حجم بسیار کم کامپایلر (کمتر از ۲ مگابایت)۱۰- امکان ترجمه کد C به V  بوسیله V و سرعت کامپایل ۱۰ تا ۲۵ برابر سریعتر (مثلا بازی DOOM از C به V تبدیل شد و کامپایل آن فقط 0.7 ثانیه طول می کشد)۱۱- امکان هات ریلود:  به محض تغییر در کد می توان خروجی آن را بدون نیاز به کامپایل مجدد مشاده کرد.۱۲- کتابخانه های گرافیکی قدرتمند: کتابخانه های طراحی مبتنی بر GDI+/Cocoa و OpenGL بدون وابستگی به سکوی خاص۱۳- کتابخانه واسط کاربری مستقل از سکو۱۴- امکان گرفتن خروجی برای سیستم عامل دیگر از یک سیستم عامل. مثلا خروجی لینوکس در محیط کاری ویندوز و برعکس۱۵- فریمورک وب توکار قدرتمند۱۶- وجود ORM توکار۱۷- مدیریت حافظه بدون استفاده از Garbage Collection در هنگام کامپایل (مشابه rust)۱۸- وجود package manager با امکان استفاده آسان۱۹- قراره همزمانی با روشی مشابه go پیاده بشه. (هنوز پیاده سازی نشده)20- عدم استفاده از LLVM و پیاده سازی کامل کامپایلر از پایهفعلا خودم روی ویندوز ریختم و دارم تست می کنم. سینتکس ساده ای داره ولی خوب متاسفانه اسپانسر زیادی نداره. باید دید آیا محکوم به فناست یا می تونه بین این همه کامپایلر موفق دوام بیاره.</description>
                <category>سلمان عرب عامری</category>
                <author>سلمان عرب عامری</author>
                <pubDate>Tue, 24 Mar 2020 21:31:23 +0430</pubDate>
            </item>
                    <item>
                <title>بانک شهر، پرینتر خراب و عدم پاسخگویی</title>
                <link>https://virgool.io/@salmanaa/%D8%A8%D8%A7%D9%86%DA%A9-%D8%B4%D9%87%D8%B1-dootuifpakxt</link>
                <description>پنج شنبه دو هفته پیش برای تبریک ولادت فرزند یکی از اقوام به کیوسک بانک شهر در خیابان هفده شهریور سمنان رفتم و در حضور متصدی درخواست کارت هدیه صد و پنجاه تومنی زدم. همه مراحل طی شد و دستگاه به وضعیت در حال چاپ کارت رفت ولی بعد از چند دقیقه هیچ اتفاقی نیفتاد. متصدی مربوطه دستگاه رو ری استارت کرد و از من خواست مجدد مراحل رو برم. ولی دوباره همون اتفاق افتاد و ایشون گفتن دستگاه خرابه. من پیامک کسر شدن دو تا ۱۵۲ هزار تومن از حساب رو نشون دادم و ایشون خیلی خونسرد گفتن ظرف هفتاد و دو ساعت به حساب برمیگرده.بعد از یک ساعت که اتفاقی نیفتاد به ایشون مراجعه و درخواست پیگیری کردم که من رو به شماره روابط عمومی بانک ارجاع دادن. تماس گرفتم و بعد بیست دقیقه انتظار، اپراتور مربوطه گفتن کارت شما صادر شده و ما با شما تماس میگیریم و شماره کارت برای دریافت المثنی اعلام میکنیم.الان با گذشت دو هفته هنوز خبری از تماس نشده و من هم که تماس میگیرم میگن یک شرکت باید این کار رو انجام بده که در زمان مقرر پیگیری نمیکنه.اولا: چرا متصدی شما بدون اطلاع از من خواست دوباره مراحل رو طی کنمدوما: چرا بانک با این همه شعبه اعتبار خود را به یک شرکت گره زدهسوما: چرا قبل از سرویس دهی پرینتر کارت رو چک نمیکنیدچهارم: کد نرم افزارتون رو تغییر بدید تا پس از چاپ کارت تایید تراکنش رو به مرکز بفرستهپنجم: من پولمو می‌خوام ?</description>
                <category>سلمان عرب عامری</category>
                <author>سلمان عرب عامری</author>
                <pubDate>Thu, 16 Aug 2018 07:08:07 +0430</pubDate>
            </item>
                    <item>
                <title>چرا از Go برای محاسبات سنگین استفاده کنیم؟</title>
                <link>https://virgool.io/Software/%DA%86%D8%B1%D8%A7-%D8%A7%D8%B2-go-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D8%A7%D8%AA-%D8%B3%D9%86%DA%AF%DB%8C%D9%86-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-bs7l4riedu1r</link>
                <description>از این پس مطالبم رو در سایت خودم هم منتشر می کنم. خوشحال می شم اونجا رو هم ببینید.https://salmana.irزبان Go در زمینه طراحی میکرو سرویس ها و برنامه های بسیار سریع با استفاده از حداکثر توان سیستم که به خوبی برای برنامه نویسان قابل فهم هستند مطرح شده است. در ادامه سعی می کنیم نمونه برنامه ای بنویسیم که میزان تاثیر استفاده از چند هسته در سرعت انجام محاسبات را به ما نشان بدهد.در این برنامه یک متد داریم که یک عملیات ساده ریاضی را 100 میلیون بار انجام می دهد. حالا می خواهیم با استفاده از روتین های گو، این 100 میلیون عملیات را به طور موازی 100 بار انجام دهیم. در حقیقت می خواهیم 10000000000 بار دستور ساده ریاضی را اجرا کنیم.برای اندازه گیری زمان اجرا از مجموعه time استفاده می کنیم. همچنین برای اطمینان از اینکه تمام عملیات مورد نظر ما به طور کامل انجام شده است از sync.WaitGroup استفاده کرده ایم.ابتدا برنامه را با استفاده از فقط یک هسته پیاده سازی می کنیم. 
package main

import (
 &amp;quotlog&amp;quot
 &amp;quotruntime&amp;quot
 &amp;quotsync&amp;quot
 &amp;quottime&amp;quot
)

func m(wg *sync.WaitGroup) {
 defer wg.Done()
 j := 0
 for i := 0; i &lt; 100000000; i++ {
        j += i % 2
    }
}

func main() {// use only one core
  runtime.GOMAXPROCS(1)

 start := time.Now()
 var wg sync.WaitGroup
 for i := 0; i &lt; 100; i++ {
        wg.Add(1)
        go m(&amp;wg)
 }
   // wait until all calls completed
    wg.Wait()
    elapsed := time.Since(start)
    log.Printf(&amp;quotBinomial took %s&amp;quot, elapsed)
}فرض می کنیم اسم برنامه test.go باشد. آن را اجرا می کنیم.go run test.goخروجی این برنامه:Binomial took 4.0700248sاستفاده از حداکثر توان!حالا با تغییر در برنامه، به آن اجازه می دهیم از همه هسته های سیستم استفاده کند. runtime.GOMAXPROCS(runtime.NumCPU())نتیجه اجرای برنامه روی سی پی یو 4 هسته ای:Binomial took 2.1269973sچطوره حالا برنامه رو روی یک سرور 32 هسته ای اجرا کنیم؟ نتیجه اعجاب آور است!Binomial took 234.2243msاجرای 10.000.000.000 دستور در 234 میلی ثانیه. البته با ایجاد توازن بین تعداد روتین ها و تعداد پردازش در روتین ها می توان به سرعت های بالاتر از این هم دست پیدا کرد...از این به بعد شاید برای برنامه هایی که نیاز به محاسبات ریاضی سنگین دارند (مثل استخراج رمز ارزها) گوشه چشمی هم به Go داشته باشید...پانوشتمنظور از هسته همون پردازنده است. منتهی چون در اصطلاح می گوییم cpu چهار هسته ای، ما عنوان هسته رو آوردیم. در واقع سیستمی که 4 پردازنده دارد.البته شاید سیستم 32 هسته ای دم دست شما باشه ولی من شانس آوردم برای تست، از یکی دسترسی ریموت موقتی گرفتم.عملیات در واقع به معنی اجرای یک دستور محاسباتی هست مثلا یک جمع، یک تفریق و ... ولی خوب ما که پشت زمینه کد کامپایل شده نیستیم. به نظر میاد همین یک عملیات مورد نظر ما هم از چند عملیات مختلف تشکیل شده باشه. مثل فراخوانی متد،   ورود عدد به ثبات، عملیات جمع، انتقال به پشته و ...برای همین هم اگر شما مثلا به جای یک جمع ساده جمع و تفریق و ضرب های مختلف رو بزارید باز هم در سرعت اجرا خیلی تاثیری نداره چون در واقع این سرعت اجرای یک دستور نیست و دستورایی که شما می گذارید بخش کوچکی از دستوراتی هست که طی فراخوانی اجرا می شه. و این یعنی سرعت باز هم باورنکردنی تر اجرا!البته دستیابی به سرعت بالا هزینه هم داره. Go برای هر گو روتین، 32 کیلوبایت حافظه اختصاص می ده پس اگر ما 100 تا اجرا کنیم 3200 کیلوبایت حافظه نیازه (البته در این مثال عددی حساب نمی شه ولی در برنامه هایی که فراخوانی های متعدد گو روتین دارند این مقدار ممکنه خیلی زیاد بشه، مثل سیستم های مدیریت صف و ...)</description>
                <category>سلمان عرب عامری</category>
                <author>سلمان عرب عامری</author>
                <pubDate>Mon, 11 Jun 2018 00:02:40 +0430</pubDate>
            </item>
            </channel>
</rss>