নিরাপদ অবস্থা নিশ্চিতভাবে অচলিত মুক্ত, তবে অচলাবস্থা রোধ করতে আপনি যদি সমস্ত প্রয়োজনীয়তা পূরণ করতে না পারেন তবে তা হতে পারে। উদাহরণস্বরূপ, যদি দুটি থ্রেড অচলাবস্থার মধ্যে পড়তে পারে যখন তারা থ্রেড এ শুরু করে, তখন থ্রেড বি, তবে যখন তারা বিপরীতটি শুরু করবে (বি, এ) তারা ভাল কাজ করবে - আমাকে ধরে নিতে দাও বি আরও ভাল;) সিস্টেমের অবস্থাটি নিরাপদ নয়, তবে ভাগ্যবান শুরুর ক্রমটি এটি কাজ করবে। কোনও অচলাবস্থা নেই, তবে এটি সম্ভব। এছাড়াও যদি আপনি এগুলি হাত দ্বারা সিঙ্ক্রোনাইজ করেন - ভাল ক্রমে শুরু করুন - এটি বিপজ্জনক - কোনও কারণে আপনার পছন্দ মতো তাদের বরখাস্ত করা হতে পারে না - সিস্টেম এখনও নিরাপদ নয় (সম্ভাব্য অচলাবস্থার কারণে) তবে এর সম্ভাবনা কম রয়েছে is কিছু বাহ্যিক ইভেন্টের ক্ষেত্রে যেমন জমাট বাঁধার থ্রেড বা ইন্টারুপ্টগুলি চালিয়ে যাওয়ার পরে এটি ব্যর্থ হবে।
আপনার বুঝতে হবে - অচলাবস্থা এড়ানোর জন্য নিরাপদ অবস্থা যথেষ্ট শর্ত, তবে অনিরাপদ কেবল নেসেসারি শর্ত। এই মুহূর্তে মাথা থেকে বাইরে কোড লেখা শক্ত, তবে আমি কিছুটির জন্য অনুসন্ধান করতে পারি। আমি এডায় কোডটির মুখোমুখি হয়েছি যে এটি বেশ কয়েক সপ্তাহ ধরে পুরোপুরি কাজ করে যা 99/100 বারের বেশি হয়েছে (এবং তারপরে সার্ভার পুনরায় চালু না হওয়ায় অচলাবস্থার কারণে বন্ধ হয়ে গেছে) তবে একবারে এটি বেশ কয়েক সেকেন্ড পরে অচলাবস্থায় পড়েছিল dead
বিভাগের সাথে তুলনা করে আমাকে কিছু সহজ উদাহরণ যোগ করতে দাও: যদি আপনার ফাংশন সি / ডি বিভক্ত করে এবং ফলাফলটি দেয়, d সমান 0 হয় কিনা তা পরীক্ষা না করে শূন্য ত্রুটি দ্বারা বিভাজন হতে পারে, সুতরাং কোডটি অনিরাপদ (একই নামকরণের উদ্দেশ্যে), তবে অবধি আপনি যেমন বিভাজন করেন, সবকিছু ঠিক আছে, তবে তাত্ত্বিক বিশ্লেষণ কোডটি অনিরাপদ হওয়ার পরে এবং সঠিকভাবে পরিচালনা না করা অপরিজ্ঞাত আচরণে পড়তে পারে।