Payamvdn/NorthPersian_fa_wiki huggingface dataset:
ن های صلح را تا اطلاع ثانوی متوقف کرد و صدر در ۸ مارس ۲۰۱۵ با انتشار بیانیه ای از سوی دفترش، لغو توقف فعالیت و مشارکت جنگجویان سرایا السلام در عملیات موصل را اعلام کرد. پس از آن بیانیه، رزمندگان تیپ همچنین مناطق وسیعی را در سامرا و جزیره الاسحاقی در استان صلاح الدین تصرف کردند و مسئول آزادسازی آنچه از آنها باقی مانده بود، شدند. جرف الصخر ناحیه ای حدود ۶۰ است کیلومتری جنوب غربی بغداد. این منطقه یک مثلث مرزی بین شمال بابل، شرق انبار و جنوب بغداد تشکیل می دهد. این منطقه در کنار رودخانه فرات واقع شده و با زمین های کشاورزی وسیع خود شناخته می شود. این منطقه تحت کنترل داعش بود و اعضای آن از آنجا برای انجام عملیات تروریستی در کربلا و بابل استفاده می کردند. گردان های صلح مستقیماً در جرف الصخر مداخله کردند. در ۱۵ اکتبر ۲۰۱۴، نیروهای سرایا السلام توانستند کل منطقه دریاچه ها را آزاد کرده و آن را به نیروهای امنیتی تحویل دهند. آمرلی منطقه ای از شهرستان طوزخورماتو با اکثریت شیعه ترکمن است. در ۱۰ ژوئن ۲۰۱۴، داعش پس از سقوط موصل، این شهر را محاصره کرد. در طول دوره محاصره، آنها آب را قطع کردند و به مدت ۸۰ روز از ورود غذا و دار
و به شهر جلوگیری کردند. مردم شهر در برابر محاصره مقاومت کردند، مانع از حمله داعش به شهر خود شدند و توانستند حملات مکرر آن را دفع کنند. در ۲۳ اوت ۲۰۱۴، دفتر صدر بیانیه ای از رهبر جنبش صدر، مقتدی صدر، منتشر کرد که در آن از گردان های صلح خواسته بود تا با نیروهای امنیتی برای پایان دادن به محاصره آمرلی هماهنگی کنند. در واقع، نیروهای بزرگی به حومه شهر رسیدند و شروع به آماده شدن برای یک عملیات بزرگ برای لغو محاصره کردند. گردان های صلح عملیات «ما داریم می آیم، آمرلی» را آغاز کردند. در ۳۱ اوت، نیروهای مشترک ارتش عراق، واحدهای بسیج مردمی و گردان های صلح موفق شدند محاصره شهر آمرلی را بشکنند و از چندین محور وارد شهر شوند، در حالی که گردان های صلح اعلام کردند که پس از سه روز توانسته اند روستای البو حسن در حومه شهر آمرلی را آزاد کنند. پس از آنکه داعش کنترل کل جزیره سامرا را به دست گرفت، سامرا در غرب شهر سامرا واقع شده است. سامرا شهری مقدس برای شیعیان محسوب می شود و رابط بین استان های صلاح الدین، انبار و نینوا است. سامرا مناطق وسیعی را در بر می گیرد که شامل زمین های مختلف و متنوعی است و به پناهگاهی امن برای شبه نظامیان القا
عده و بعدها شبه نظامیان داعش تبدیل شده است. در اول مارس ۲۰۱۶، گردان های صلح از آغاز عملیات مشترک بزرگی با همکاری ارتش عراق، پلیس فدرال و مبارزان گردان های صلح و نیروهای بسیج مردمی برای آزادسازی این جزیره خبر دادند. این نبرد به مدت سه روز ادامه یافت که طی آن نیروهای مشترک توانستند پس از حرکت نیروها از منطقه، به دریاچه ثرثار برسند و مساحتی تقریباً ۴۲ کیلومتر را آزاد کردند. پس از شکست داعش، نخست وزیر عادل عبدالمهدی تصمیمی مبنی بر سازماندهی نیروهای حشد الشعبی با تشکیلات ارتش و پلیس و محدود کردن سلاح ها به دولت صادر کرد. در نتیجه، صدر اکثر عملیات های شبه نظامیان را در سال ۲۰۲۱ متوقف کرد، با این حال، هنوز به عنوان «درسی در سیاست» عمل می کند. در سال ۲۰۲۲، پس از آنکه سعد اعلام کرد از سیاست کناره گیری خواهد کرد، گروه های شیعه علیه یکدیگر شورش کردند و از آنجایی که گمان می رود ایران بر جمعیت شیعه نفوذ دارد، گروه های مسلح "عملاً" اتحاد خود را در زمینه مبارزه قدرت از دست دادند. استدلالی وجود داشته مبنی بر اینکه ممکن است در نتیجه تصمیمات محمد شیاع السودانی در مورد اصلاح گروه ها و مبارزه قدرت با محوریت ایران در منطقه، یک در
گیری داخلی جدید در میان شیعیان آغاز شود. همچنین گزارشی از درگیری جزئی هواداران سرایا السلام در سال ۲۰۲۳ با عصائب اهل حق، یکی دیگر از گروه های شبه نظامی شیعه در منطقه، منتشر شده است. به همین ترتیب، صدر گزارش داده است که در چارچوب جنگ غزه، خواستار اقدام علیه ایالات متحده شده است که به معنای حمایت از غزه است. همچنین گزارش شده است که از سال ۲۰۲۳، سرایا السلام از نیروهای بسیج مردمی جدا شده است، بنابراین تمام فعالیت های آنها به جز فعالیت های مجاز دولتی، اقدامات مستقلی هستند. صدر نیز با استفاده از شبکه های خود که با شبه نظامیان ایجاد کرده بود، اعتراضاتی را در حمایت از حماس سازماندهی کرده است.
تیز کردن فرآیند ایجاد یا اصلاح یک تیغه است، لبه دو وجه غیرهمسطح را به یک همگرا متصل می کند، در نتیجه لبه ای با شکل مناسب روی ابزار یا ابزاری که برای برش طراحی شده است ایجاد می کند. افزایش از طریق عملیات برداشت ماده به وسیله ای با سختی بالاتر از ماده پایه ابزار حاصل می شود، که ممکن است با فرآیندهای پرداخت/صیقل کاری سطح برای دستیابی به صافی بیشتر تکمیل گردد. ابزار و مواد. . سطوح فلزات چکش خوار مانند برنز ، آهن و فولاد ملایم ممکن است با کوبیدن یا خرد کردن یک سطح صاف به یک لبه تیز تبدیل کرد. این فرآیند همچنین باعث سخت شدن کار می شود. یک ماده ساینده ممکن است به لبه برش مالیده شود تا تیز شود. سنتی ترین ماده ساینده، سنگ طبیعی مانند ماسه سنگ یا گرانیت است. چرخ های سنگ زنی مصنوعی مدرن و سنگ های تیزکننده تخت را می توان در درجه های دقیق سایندگی مطابق با فرآیند مورد نظر تولید کرد. لبه تیز را میتوان با اصلاح نمود. ساینده های کم هزینه تر، اما سخت تر، مانند سنگ های آب مصنوعی و طبیعی ژاپنی در دسترس هستند. . این تیزکن های برقی معمولاً در آشپزخانه استفاده می شوند اما توانایی تیز کردن تیغه هایی مانند چاقوهای جیبی یا تاکتیکی را
دارند. مزیت اصلی استفاده از تیز کن برقی سرعت در بسیاری از مدل ها است که می تواند فرآیند تیز کردن را در یک تا دو دقیقه کامل کند. نقطه ضعف این است که زاویه تیز کردن ثابت است، بنابراین برخی از چاقوهای تخصصی، مانند یک سانتوکو به سبک ژاپنی، ممکن است نیاز به توجه بیشتری برای تیز کردن به زاویه ایده آل داشته باشند. زوایه ها. چاقوهای بسیار تیز در حدود 10 d.ps (درجه در هر طرف) تیز می شوند (که به این معنی است که لبه چاقو دارای زاویه 20 درجه است). به طور کلی، تیغ ها، چاقوهای پوست کنی و چاقوهای فیله گیری باید تیزترین چاقوها با زاویه 12 تا 18 درجه باشند. بیشتر چاقوهای آشپزخانه، مانند چاقوهای چندکاره/برشی، چاقوهای سرآشپز، چاقوهای استخوان گیری، چاقوهای حکاکی، باید با زاویه 15 تا 25 درجه تیز شوند. استثناء چاقوهای سبک ژاپنی هستند که معمولاً بسته به سازنده چاقو با زاویه 14 تا 16 درجه تیز می شوند. چاقوهای سبک ژاپنی از فولاد بسیار سخت تری استفاده می کنند و بنابراین شکننده تر از همتایان سبک غربی خود هستند. این بدان معنی است که هنگام کار کردن با این چاقوها باید مراقب باشید زیرا مستعد ترک خوردن و شکستن هستند. دسته چاقوهای ورزشی، از
جمله چاقوهای جیبی، چاقوهای بقا و چاقوهای شکاری، عملکرد شدیدتری دارند و باید در محدوده زاویه 25 تا 30 درجه تیز شوند. زاویه تیز کمتر به این معنی است که فلز بیشتری برای برش وجود دارد، بنابراین دوام بیشتری را در میدان ایجاد می کند. برای داشتن لبه بسیار بادوام، چاقو ، اسکنه ، چاقوی کششی یا تبر باید با زاویه 30 تا 40 درجه تیز شوند تا استحکام بیشتر و ماندگاری طولانی تر تیزی را فراهم کند. لبه های مستقیم. بسیاری از ابزارها دارای لبه برشی هستند که اساساً مستقیم است. چاقو ، اسکنه ، تیغ های لبه مستقیم و قیچی نمونه هایی هستند. تیز کردن لبه مستقیم نسبتاً ساده است و می توان با استفاده از یک دستگاه تیز کن ساده که استفاده از آن بسیار آسان است اما بهترین نتیجه ممکن را به همراه نخواهد داشت و یا با استفاده ماهرانه از سنگ های آسیاب روغن یا آب، چرخ های سنگ زنی، هونس و غیره انجام می شود. برای برخی از کاربردها، لبه ای با مقدار مشخصی از "ناهمواری" قابل قبول یا حتی مطلوب است، زیرا باعث ایجاد یک لبه برش دندانه دار می شود. در کاربردهای دیگر لبه باید تا حد امکان صاف باشد. فولادسازی. تیز کردن لبه های مستقیم (چاقو، اسکنه و غیره) به صورت دس
تی را می توان به مراحل زیر تقسیم کرد. . سپس لبه را می توان با صیقل دادن لبه با مواد ساینده ریز مانند روژ یا روی یک تکه چرم محکم یا بوم . لبه های دیگر. در جایی که لبه ها صاف نیستند، تکنیک های مختلفی مورد نیاز است. ابزارها و مهارت های ویژه اغلب مورد نیاز است، و تیز کردن اغلب توسط یک متخصص به جای استفاده کننده از ابزار بهتر انجام می شود. مثالها عبارتند از: به عنوان یک حرفه یا خدمت. تعدادی از تیغه تیزکن ها یک تجارت سیار را اداره می کنند، به مکان های مشتریان خود سفر می کنند، اغلب در وسایل نقلیه مجهز. در کشورهای توسعه یافته کمتر رایج است. هنوز در بسیاری از مناطق جهان بسیار رایج است، صنعتگران ماهر خدمات تیز کردن کنار جاده را برای چاقوها و چاقوهای آشپزخانه، قیچی، و گاهی اوقات تیغه های دیگر ارائه می دهند. آنها معمولاً یک "گرد" دارند که ممکن است شامل مشاغلی مانند قصابی یا آرایشگری باشد که برخی از آنها، علاوه بر استفاده از خدمات برای ابزار خود، ممکن است به عنوان "عامل" ابزار جمع آوری برای عموم مردم عمل کنند. تیزکن معمولاً یک میز کار سیار مجهز به سنگ سنباده دارد که ممکن است به صورت دستی، با مکانیزم دوچرخه یا موتور الکتری
کی کار کند. علاوه بر سنگ زنی درشت، تیزکن ها معمولاً لبه های برش را با سنگ تیزکننده یا می پوشانند، دستگیره های شل را محکم یا جایگزین می کنند و به طور کلی توصیه و کمکی را در مورد بهترین عملکرد ارائه می دهند. برخی نیز چاقو و محصولات مرتبط می فروشند. خدمات مدرن تیز کردن ابزارهای مختلف در ون یا اتوبوس هایی سفر می کنند که داخل آنها کارگاهی وجود دارد و این امکان را فراهم می آورد که لبه های ابزارها و وسایل مختلف را سرویس کنند. دو شکل عمده از تیز کردن یا تیزکننده ها وجود دارد: یکی برای افرادی که به تیز کردن به عنوان یک سرگرمی می پردازند و آن را به کار می برند، و دیگری برای نهادهای صنعتی یا هنری که تلاش می کنند با سبک های مختلف تیز کردن آشنا شوند و نحوه عملکرد آن ها را در کاربردهای مختلف یاد بگیرند. منابع. Jonathan Donner (18 August 2006). "Internet use (and non-use) among urban microenterprises in the developing world: an update from India" (PDF). Microsoft Research India. pp. 8–10, 19. Retrieved 28 March 2013. Kristi Wetsch. "Entrepreneurial Skills Building". University of Montana, Rural Institute. Retrieved 28 March
2013. جان پول - صنعتگر تیز کن و صنعتگر قیچی و کارد و چنگال - http://www . Battlebornbladesharpening.com
جوشکاری اکستروژن یکی از روش های جوشکاری ترموپلاست ها و مواد کامپوزیتی است که در دهه ۱۹۶۰ به عنوان تکامل یافته ی جوشکاری با گاز داغ توسعه یافت. این فرآیند می تواند به صورت دستی یا خودکار انجام شود و معمولاً در کاربردهایی با قطعات بزرگ یا ضخیم مورد استفاده قرار می گیرد. در این فرآیند از یک سر جوش استفاده می شود که دارای یک نازل برای هوای گرم و یک اکسترودر است که مواد پرکننده را به بیرون هل می دهد. این فرآیند مستلزم گرم کردن سطوح اتصال (فیدینگ) و افزودن مواد پرکننده مذاب یا پلاستیک شده (اکسترودیت) با اکسترود کردن آن از طریق یک قالب (کفش) است. این فرآیند برای اطمینان از اتصال خوب، اکسترود را با فشار اعمال می کند و سپس اجازه می دهد تا قطعه خنک شود. مراحل جوشکاری. مراحل جوشکاری اکستروژن مشابه سایر روش های جوشکاری پلاستیک است و شامل موارد زیر می شود: پیش گرمایش در ابتدای جوش ضروری است که معمولاً با استفاده از نازل هوای گرم انجام می شود. مواد پرکننده معمولاً پلیمرهایی هستند که به صورت رشته های پیچیده شده یا گرانول های کوچک عرضه می شوند. نحوه اتصالات. اکثر اتصالات جوش طراحی شده اند تا در یک پاس انجام شوند، اما صفحات ب
ا ضخامت بیش از ۳۰ میلی متر نیاز به چندین پاس دارند. طراحی اتصالات شامل موارد زیر است: • اتصالات لب به لب (Butt Joints): شامل شیار V تک یا دوگانه با زاویه ۴۵ تا ۹۰ درجه و فاصله ریشه ۰ تا ۲ میلی متر. • اتصالات T: معمولاً دارای یک شیب ۴۵ تا ۶۰ درجه و فاصله ریشه ۰ تا ۲ میلی متر هستند. • اتصالات همپوشانی (Overlap Joints): برای مواردی که نیاز به پوشش دو قطعه بر روی یکدیگر است. اتصالات TYK برای لوله کشی و جوش های گوشه ای نیز قابل اجرا هستند. کاربرد ها. فرآیند جوشکاری اکستروژن برای کاربردهایی که نیاز به جوش سریع قطعات ضخیم دارند، گزینه ای جذاب به شمار می رود. در مواردی که قطعات دارای هندسه بزرگ هستند و استفاده از روش های سنتی مانند جوشکاری صفحه داغ ممکن نیست، این روش گاهی تنها گزینه ی مقرون به صرفه و عملی محسوب می شود. از جمله کاربردهای رایج آن می توان به ساخت مخازن مخصوص پسماندهای مایع، مواد خورنده و منابع آب اشاره کرد. همچنین در مواردی که نیاز به آب بندی وجود دارد، تا زمانی که اتصال آب بند برقرار باشد، قابل استفاده است. مواد اولیه. جوشکاری اکستروژن بیشترین موفقیت را در جوش دادن انواع مختلف پلی الفین ها داشته است. ا
ین دسته از پلیمرها به دلیل خواص فیزیکی و شیمیایی شان به خوبی با این روش جوش داده می شوند. برخی از رایج ترین موادی که با فرآیند جوشکاری اکستروژن جوش داده می شوند: تجهیزات. در حالی که انواع مختلفی از تجهیزات جوشکاری اکستروژن وجود دارد، هر سیستم جوشکاری اکستروژن معمولاً شامل سه بخش اصلی است: منبع حرارتی (برای پیش گرمایش سطح)، واحد اکستروژن (برای ذوب و تزریق مواد پرکننده)، و کفشک جوشکاری (برای شکل دهی و هدایت مواد در محل اتصال). این اجزا با هم کار می کنند تا یک اتصال قوی و یکنواخت در مواد ترموپلاستیک ایجاد کنند. اکسترودر. اکسترودر بخشی از سیستم جوشکاری است که مواد پرکننده (اکسترودات) را وارد فرآیند می کند. بسته به اینکه این مواد به صورت رشته ای پیچیده (spooled strand) یا گرانول (pellet) باشند، نحوه ی تغذیه متفاوت است. رشته ها از طریق لوله ای وارد هد جوش و سپس از کفشک خارج می شوند. گرانول ها ابتدا به داخل یک مخزن ریخته شده و با کمک اکسترودر مارپیچی گرم شده ذوب شده و از کفشک خارج می شوند. استفاده از گرانول تنها در حالت های افقی یا تخت ممکن است. منبع حرارت تابشی. در بیشتر کاربردها، منبع گرمایش تابشی معمولاً هوای داغ
است که از طریق نازل هایی در هد جوش به سطح اتصال دمیده می شود. هندسه ی نازل ها می تواند بر اساس نوع اتصال تغییر کند تا گرمایش موضعی یا یکنواخت تری فراهم شود. اگرچه نازل های عمومی نیز وجود دارد، نازل های خاص برای بهینه سازی گرمایش برخی اتصالات به کار می روند. گاهی اوقات، به جای هوای داغ، از لامپ های هالوژن برای پیش گرمایش سطح تماس استفاده می شود. کفشک جوشکاری. کفشک جوشکاری قالبی است در انتهای مسیر تغذیه که مواد پرکننده از آن خارج می شوند. معمولاً از پلی تترافلوئورواتیلن (PTFE) ساخته می شود به دلیل خاصیت نچسب بودن آن. شکل و اندازه کفشک بسته به نوع اتصال متفاوت است و شامل نازل های هدایت کننده ای نیز هست که جلوی پخش شدن مواد مذاب در جهت های ناخواسته را می گیرند. پارامترهای جوشکاری. در فرآیند جوشکاری اکستروژن، پارامترهای مختلفی نقش مهمی دارند و هر یک تأثیر متفاوتی بر کیفیت جوش دارند. برخی از این پارامترها توسط اپراتور کنترل می شوند و برخی دیگر از پیش در دستگاه تنظیم می شوند. تعادل درست بین این پارامترها برای دستیابی به جوش های قوی و با ظاهر مناسب ضروری است. استفاده از اپراتور ماهر یا سیستم های خودکار همراه با تنظی
مات صحیح، جوش هایی یکنواخت و قابل تکرار ایجاد می کند. سرعت جوشکاری. سرعت جوشکاری (یا سرعت حرکت) نرخ پیشروی جوش در امتداد اتصال است. در سیستم های خودکار، این سرعت پیش از شروع قابل تنظیم است، اما در حالت دستی، به مهارت جوشکار بستگی دارد. سرعت زیاد باعث کم بودن ماده پرکننده و جوش ضعیف می شود، و گرمایش ناکافی منجر به چسبندگی بد خواهد شد. در مقابل، سرعت کم باعث تجمع بیش از حد ماده و ایجاد جوش های نازیبا یا پلیسه می شود که نیاز به حذف دارند. موقعیت سر جوش. موقعیت قرارگیری تفنگ جوشکاری نقش حیاتی در اطمینان از رسوب صحیح ماده پرکننده دارد. در حالت دستی، اپراتور باید دقت کند که هد جوش به درستی به سمت اتصال هدف گیری شده باشد. در صورت ناهماهنگی بین تفنگ جوش و محل اتصال، ماده به درستی در محل مورد نظر رسوب نخواهد کرد. برای کمک به هدایت دقیق، کفشک جوش با شکل خاصی متناسب با نوع اتصال طراحی می شود تا موقعیت مناسب در طول فرآیند حفظ گردد. دمای اکسترود. دمای ماده ی پرکننده (اکسترودات) پیش از آغاز جوشکاری روی دستگاه تنظیم می شود. این دما باید به اندازه ای بالا باشد که ماده به خوبی جریان یابد، اما نه آن قدر زیاد که دچار تجزیه ی شی
میایی شود. دمای ایده آل به نوع پلیمر مورد استفاده بستگی دارد. سرعت جریان هوا و دمای هوا. تحقیقات نشان داده اند که نرخ جریان هوا و دمای هوا دو عامل کلیدی در تقویت مقاومت خزشی (creep strength) در جوش های ایجادشده با اکستروژن هستند. این عوامل به شکل گیری لایه مذاب مناسب روی سطح اتصال کمک می کنند. زمانی که ضخامت این لایه به مقدار ایده آل برسد، استحکام جوش به طور چشم گیری افزایش می یابد. با این حال، دما و جریان هوای مناسب بسته به نوع پلیمر و همچنین شکل نازل مورد استفاده متفاوت خواهد بود. نرخ اکستروژن. نرخ اکستروژن نشان دهنده میزان ماده ای است که در هر لحظه به داخل اتصال تزریق می شود. این نرخ باید با دمای اکسترودات و نرخ/دمای جریان هوا در تعادل باشد تا جوشی با کیفیت مطلوب ایجاد شود. مقدار کم ماده منجر به عدم اتصال کامل شده و مقدار زیاد می تواند پلیسه یا نقاط تمرکز تنش ایجاد کند که باعث کاهش مقاومت جوش در شرایط بارگذاری دینامیکی و خستگی می شود. مزایا و معایب. مزایا. مزیت اصلی جوشکاری اکستروژن، نرخ بالای تزریق ماده پرکننده در اتصال است که زمان چرخه را به طور چشمگیری کاهش می دهد. در مقایسه با جوشکاری با گاز داغ (Hot G
as Welding)، این روش می تواند زمان انجام جوش را تا ۵ تا ۶ برابر سریع تر کند، که در کاربردهای صنعتی بسیار مؤثر است. اگر پارامترهای جوشکاری به درستی تنظیم شوند، نواحی جوش خورده در یک قطعه ی پلیمری می توانند حتی قوی تر از سایر بخش ها باشند و به عنوان نقطه ی ضعف تلقی نشوند. این موضوع نشان دهنده ی کیفیت بالای اتصالات حاصل از جوشکاری اکستروژن در شرایط ایده آل است. از آنجا که بسیاری از پارامترهای اصلی جوشکاری در دستگاه از پیش تنظیم می شوند، دستیابی به جوش هایی با کیفیت بالا و یکنواخت کاملاً امکان پذیر است. این قابلیت باعث کاهش خطای انسانی و افزایش قابلیت اطمینان در تولید می شود. معایب. در جوشکاری اکستروژن دستی، اپراتور باید مهارت قابل توجهی داشته باشد تا جوش های سالم و باکیفیت تولید کند، به ویژه در موقعیت های دشوار مانند جوشکاری عمودی یا بالای سر. علاوه بر این، وزن بالای دستگاه های دستی (گاهی تا ۱۲ کیلوگرم) می تواند کار با آن ها را خسته کننده و دشوار کند.
حافظهٔ تراکنشی نرم افزاری (به انگلیسی: Software Transactional Memory یا به اختصار STM) یک مکانیزم کنترل همروندی در علوم رایانه است که مشابه تراکنش های پایگاه داده برای کنترل دسترسی به حافظهٔ مشترک در محاسبات هم زمان به کار می رود. این روش جایگزینی برای همگام سازی مبتنی بر قفل است و در نرم افزار پیاده سازی می شود، نه در سخت افزار. در این زمینه، "تراکنش" به قطعه ای از کد اطلاق می شود که مجموعه ای از خواندن ها و نوشتن ها را روی حافظهٔ مشترک انجام می دهد. این عملیات به طور منطقی در یک لحظهٔ واحد رخ می دهند؛ حالت های میانی برای سایر تراکنش ها (که با موفقیت انجام می شوند) قابل مشاهده نیستند. ایدهٔ پشتیبانی سخت افزاری از تراکنش ها نخستین بار در مقاله ای از تام نایت در سال ۱۹۸۶ ارائه شد. این مفهوم توسط موریس هرلیهی و جی. الیوت بی. ماس رواج یافت. در سال ۱۹۹۵، نیر شاویت و دن تویتو این مفهوم را به حافظهٔ تراکنشی صرفاً نرم افزاری (STM) گسترش دادند. از سال ۲۰۰۵، STM به موضوعی مهم در پژوهش های دانشگاهی تبدیل شده و پشتیبانی عملی از آن نیز رو به افزایش است. عملکرد. برخلاف تکنیک های قفل گذاری که در بیشتر برنامه های چندریسمانی
مدرن به کار می رود، STM اغلب رویکردی خوش بینانه دارد: یک ریسمان (thread) تغییرات خود را روی حافظهٔ مشترک بدون توجه به آن چه سایر ریسمان ها انجام می دهند، اعمال می کند و همهٔ خواندن ها و نوشتن ها را در یک گزارش (log) ثبت می کند. در پایان تراکنش، خواننده بررسی می کند که آیا تغییرات دیگری از سوی ریسمان های دیگر بر نواحی دسترسی یافته وجود داشته یا نه. اگر بررسی موفق باشد، تغییرات نهایی شده و تراکنش اصطلاحاً commit می شود. در غیر این صورت، تراکنش abort می شود و همهٔ تغییرات آن به حالت قبل بازگردانده می شود. مزیت این رویکرد خوش بینانه افزایش هم زمانی است: هیچ ریسمانی نیاز به صبر برای دسترسی به یک منبع ندارد و ریسمان های مختلف می توانند به صورت هم زمان بخش های جداگانه ای از ساختار داده را تغییر دهند. با این حال، در عمل، STM در مقایسه با سیستم های قفل گذاری دقیق در تعداد کم پردازنده ها (۱ تا ۴) ممکن است کندتر باشد، زیرا ثبت گزارش و انجام عملیات نهایی سازی زمان بر است. با این وجود، حتی در این حالت عملکرد معمولاً بیش از دو برابر کندتر نمی شود. بسیاری از طرفداران STM معتقدند این هزینه در برابر مزایای مفهومی آن ارزش دار
د. پیچیدگی زمانی و فضایی بدترین حالت برای n تراکنش هم زمان برابر O(n) است. با این حال، پیاده سازی های خاص می توانند با جلوگیری زودهنگام از تراکنش های ناکام، سربار را کاهش دهند. مزایا و معایب مفهومی. STM علاوه بر مزایای عملکردی، درک مفهومی برنامه های چندریسمانی را ساده تر می کند و نگه داری برنامه ها را آسان تر می سازد، زیرا با انتزاع های سطح بالا مانند اشیا و ماژول ها سازگار است. در مقابل، برنامه نویسی مبتنی بر قفل گذاری با چالش های زیر روبرو است: در مقابل، مفهوم تراکنش حافظه بسیار ساده تر است، زیرا هر تراکنش را می توان به عنوان یک محاسبهٔ تک ریسمانی در نظر گرفت. مدیریت بن بست و گرسنگی یا به کلی حذف می شود یا به مدیر تراکنش واگذار می شود. وارونگی اولویت همچنان ممکن است، اما تراکنش های با اولویت بالا می توانند تراکنش های پایین تر را لغو کنند. با این حال، نیاز به بازاجرای تراکنش ها، رفتار آن ها را محدود می کند. همهٔ عملیات داخل تراکنش باید idempotent باشند، یعنی در صورت تکرار چندباره همان نتیجه را بدهند. همچنین، عملیات دارای اثرات جانبی (مثل ورودی/خروجی) باید در صورت لغو تراکنش قابل بازگردانی باشند. برای حل این
مشکل، معمولاً بافرهایی برای جمع آوری عملیات غیرقابل بازگشت استفاده می شوند و این عملیات پس از موفقیت تراکنش اجرا می شوند. در زبان هسکل، این محدودیت در زمان کامپایل و توسط سامانهٔ نوع ها enforced می شود. عملیات های ترکیبی. در سال ۲۰۰۵، تیم هریس، سایمون مارلو، سایمون پیتون جونز و موریس هرلیهی یک سامانهٔ STM مبتنی بر هسکل هم زمان معرفی کردند که اجازه می دهد عملیات اتمی دلخواه را به عملیات اتمی بزرگ تر ترکیب کرد؛ قابلیتی که در برنامه نویسی مبتنی بر قفل ممکن نیست. نویسندگان مقاله توضیح می دهند که در برنامه های مبتنی بر قفل، عملیات صحیح ممکن است در ترکیب با دیگر عملیات ناکارآمد یا نادرست عمل کنند. برای مثال، فرض کنید می خواهیم یک عنصر را از جدول درهم سازی t1 حذف و در t2 وارد کنیم، بدون آن که حالت میانی (که در آن عنصر در هیچ یک از جدول ها وجود ندارد) قابل مشاهده باشد. مگر آن که پیاده ساز جدول چنین سناریویی را پیش بینی کرده باشد، راهی برای تحقق آن نیست. اما در STM چنین ترکیبی به راحتی ممکن است. در سامانهٔ حافظهٔ تراکنشی نرم افزاری (STM)، ترکیب عملیات به صورت اتمی با قرار دادن آن ها در یک تراکنش امکان پذیر است. چالش ا
صلی، ناآگاهی کد فراخوان از زمان مناسب برای بازاجرای تراکنش ناموفق است. برای حل این مسئله، سازوکار «retry» پیشنهاد شده که با بررسی لاگ تراکنش، تشخیص می دهد چه زمانی داده ای تغییر کرده و تراکنش باید دوباره اجرا شود. همچنین تابعی به نام codice_1 معرفی شده که اجرای چند تراکنش جایگزین را امکان پذیر می کند و در صورت شکست همه، آن ها را پس از تغییر مرتبطی مجدداً امتحان می کند. این قابلیت، مانند فراخوانی codice_2 در POSIX، امکان انتظار همزمان بر چند رویداد را فراهم می سازد و واسط های برنامه نویسی را ساده تر می کند. این رویکرد در کامپایلر گلاسگو برای هسکل (GHC) پیاده سازی شده است. پشتیبانی زبان پیشنهادی. سادگی مفهومی STMها (حافظه تراکنشی نرم افزاری) باعث می شود بتوان آن ها را با استفاده از نگارش های نسبتاً ساده ی زبان های برنامه نویسی در اختیار برنامه نویس قرار داد. تیم هریس و کایر فریزر در مقاله ی خود با عنوان "پشتیبانی زبانی برای تراکنش های سبک وزن"، ایده ی استفاده از ساختار کلاسیک "ناحیه بحرانی شرطی (CCR)" را برای نمایش تراکنش ها مطرح کردند. در ساده ترین حالت، این ساختار چیزی نیست جز یک "بلوک اتمی"، یعنی یک بخش از ک
د که از نظر منطقی، در یک لحظه ی منفرد اجرا می شود: atomic { newNode-&gt;prev = node; newNode-&gt;next = node-&gt;next; node-&gt;next-&gt;prev = newNode; node-&gt;next = newNode; وقتی که اجرای بلوک به پایان می رسد، تراکنش در صورت امکان "تأیید (commit)" می شود؛ وگرنه، "باطل (abort)" شده و مجدداً تلاش می شود. (این صرفاً یک مثال مفهومی است و کد کاملی نیست. مثلاً اگر در حین تراکنش گره ی codice_3 از لیست حذف شود، این کد به درستی کار نخواهد کرد.) CCRها همچنین از "شرط محافظ" (guard condition) پشتیبانی می کنند که امکان می دهد تراکنش تا زمانی که کاری برای انجام دادن نداشته باشد منتظر بماند: atomic (queueSize &gt; 0) { remove item from queue and use it اگر این شرط برقرار نباشد، مدیر تراکنش منتظر می ماند تا یک تراکنش دیگر تغییری در شرط ایجاد کند و پس از آن، دوباره تلاش کند. این جداسازیِ ضعیف بین تولیدکننده ها و مصرف کننده ها باعث افزایش "ماژولار بودن" در مقایسه با سیگنال دهی صریح بین نخ ها (threads) می شود. در مقاله ی "تراکنش های حافظه ای ترکیب پذیر (Composable Memory Transactions)"، این مفهوم با معرفی دستور codice_4 یک
گام فراتر رفت. این دستور می تواند در هر لحظه، تراکنش را باطل کرده و منتظر بماند تا یکی از مقادیری که قبلاً در طول تراکنش خوانده شده تغییر کند، سپس تراکنش دوباره اجرا می شود. برای مثال: atomic { if (queueSize &gt; 0) { remove item from queue and use it } else { retry این توانایی برای بازآزمایی (retry) به صورت پویا و در میانه ی تراکنش، مدل برنامه نویسی را ساده تر می سازد و امکان های جدیدی را فراهم می آورد. یکی از مسائل مهم، نحوه ی رفتار استثناها (exceptions) هنگام خروج از تراکنش هاست. در مقاله ی "Composable Memory Transactions"، نویسندگان تصمیم گرفتند که خروج استثنا از تراکنش باعث "باطل شدن" آن شود، چرا که در زبان Haskell همزمان (Concurrent Haskell)، استثناها معمولاً نشان دهنده ی خطاهای غیرمنتظره هستند. با این حال، استثنا می تواند اطلاعاتی که در طول تراکنش تخصیص داده شده یا خوانده شده را برای اهداف عیب یابی حفظ کند. البته، آن ها تأکید می کنند که در دیگر محیط ها ممکن است تصمیمات طراحی متفاوتی نیز منطقی باشند. قفل گذاری تراکنشی. STM (حافظه تراکنشی نرم افزاری) می تواند به صورت یک الگوریتم بدون قفل ("lock-free") پی
اده سازی شود یا از قفل گذاری استفاده کند. دو نوع طرح قفل گذاری وجود دارد: ۱. قفل گذاری در زمان مواجهه (Encounter-time locking) که توسط "Ennals، Saha" و "Harris" معرفی شده است: در این روش، هنگام نوشتن در حافظه، ابتدا برای مکان مورد نظر یک قفل موقت گرفته می شود، سپس مقدار جدید مستقیماً نوشته می شود و در لاگ بازگردانی ("undo log") ثبت می گردد. ۲. قفل گذاری در زمان تعهد (Commit-time locking): در این روش، مکان های حافظه فقط در "مرحله ی commit" قفل می شوند. یکی از طرح های مبتنی بر commit-time به نام Transactional Locking II که توسط "Dice، Shalev" و "Shavit" پیاده سازی شده، از "ساعت نسخه ی سراسری (global version clock)" استفاده می کند. در این روش، هر تراکنش با خواندن مقدار فعلی این ساعت آغاز می شود و آن را به عنوان نسخه ی خوانده شده ("read-version") ذخیره می نماید. سپس، در هر عملیات خواندن یا نوشتن، نسخه ی مکان حافظه موردنظر با نسخه ی خوانده شده مقایسه می شود؛ و اگر نسخه ی آن بیشتر باشد، تراکنش باطل می شود. این کار تضمین می کند که کد در یک "عکس لحظه ی سازگار" از حافظه اجرا می شود. در مرحله ی commit، تمام مکان هایی ک