বেশ কয়েকটি প্রকল্পের জন্য থ্রেড হ্যান্ডলিং কোড লেখার সময় সাম্প্রতিক বছরগুলিতে আমি বেশ কয়েকবার এই সমস্যার মুখোমুখি হয়েছি। আমি দেরি করে উত্তর দিচ্ছি কারণ বিকল্প সরবরাহ করার সময় অন্যান্য উত্তরগুলির বেশিরভাগই পরীক্ষার বিষয়ে আসলে উত্তর দেয় না। আমার উত্তর সেই ক্ষেত্রে মোকাবেলা করা হয়েছে যেখানে মাল্টিথ্রেডেড কোডের বিকল্প নেই; আমি সম্পূর্ণতার জন্য কভার কোড ডিজাইন সমস্যাগুলি করি, তবে ইউনিট পরীক্ষার বিষয়েও আলোচনা করি।
টেস্টেবল মাল্টিথ্রেডেড কোড লেখা
প্রথমটি হ'ল আপনার প্রোডাকশন থ্রেড হ্যান্ডলিং কোডটি এমন সমস্ত কোড থেকে আলাদা করা যা প্রকৃত ডেটা প্রক্রিয়াকরণ করে। এইভাবে, ডেটা প্রসেসিংটি একক থ্রেডেড কোড হিসাবে পরীক্ষা করা যেতে পারে এবং মাল্টিথ্রেডেড কোডটি কেবল থ্রেড সমন্বয় করা।
দ্বিতীয় জিনিসটি মনে রাখবেন যে মাল্টিথ্রেডেড কোডগুলিতে বাগগুলি সম্ভাব্য; যে বাগগুলি অন্তত ঘন ঘন প্রকাশিত হয় সেগুলি হ'ল বাগগুলি যা উত্পাদনের মাধ্যমে ছিটিয়ে থাকবে, এমনকি উত্পাদনেও পুনরুত্পাদন করা কঠিন হবে এবং এর ফলে সবচেয়ে বড় সমস্যা দেখা দেবে। এই কারণে, কোডটি দ্রুত লেখার স্ট্যান্ডার্ড কোডিং পদ্ধতি এবং এটি কাজ না করা পর্যন্ত এটি ডিবাগ করা মাল্টিথ্রেড কোডের জন্য একটি খারাপ ধারণা; এটির ফলে কোডগুলি কার্যকর হবে যেখানে সহজ বাগগুলি স্থির হয় এবং বিপজ্জনক বাগগুলি এখনও সেখানে রয়েছে।
পরিবর্তে, মাল্টিথ্রেডেড কোড লেখার সময়, আপনাকে অবশ্যই প্রথমে বাগ লেখার বিষয়টি এড়াতে চাইছেন এমন মনোভাবের সাথে কোডটি লিখতে হবে। আপনি যদি ডেটা প্রসেসিং কোডটি সঠিকভাবে সরিয়ে ফেলে থাকেন তবে থ্রেড হ্যান্ডলিং কোডটি যথেষ্ট ছোট হওয়া উচিত - বেশ কয়েকটি লাইন, সবচেয়ে কম কয়েক ডজন লাইনে - আপনার বাগ লেখার পরিবর্তে এটি লেখার সম্ভাবনা রয়েছে এবং অবশ্যই অনেকগুলি বাগ না লিখেই লিখতে পারেন , যদি আপনি থ্রেডিং বুঝতে পারেন তবে আপনার সময় নিন এবং সতর্ক হন।
মাল্টিথ্রেডেড কোডের জন্য লিখন ইউনিট পরীক্ষা
একবার মাল্টিথ্রেডেড কোডটি যথাসম্ভব সাবধানতার সাথে লেখা হয়ে গেলে, এখনও সেই কোডটির জন্য টেস্ট লেখার সার্থকতা রয়েছে। পরীক্ষাগুলির প্রাথমিক উদ্দেশ্য অত্যন্ত সময় নির্ভর নির্ভর রেস কন্ডিশনের বাগগুলির জন্য পরীক্ষা করা এতটা নয় - এই জাতীয় বর্ণের অবস্থার জন্য পুনরাবৃত্তি পরীক্ষা করা অসম্ভব - তবে এই পরীক্ষাগুলি প্রতিরোধের জন্য আপনার লক করার কৌশলটি একাধিক থ্রেডকে যেমন ইচ্ছা তত ইন্টারেক্ট করার অনুমতি দেয় তা পরীক্ষা করে দেখা ।
সঠিকভাবে লকিং আচরণের সঠিকভাবে পরীক্ষা করতে একটি পরীক্ষার জন্য একাধিক থ্রেড শুরু করতে হবে। পরীক্ষাটি পুনরাবৃত্তিযোগ্য করতে আমরা থ্রেডগুলির মধ্যে মিথস্ক্রিয়াটি অনুমানযোগ্য ক্রমে ঘটতে চাই happen আমরা পরীক্ষায় থ্রেডগুলি বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে চাই না, কারণ এটি থ্রেডগুলি বাহ্যিকভাবে সিঙ্ক্রোনাইজ করা হয়নি এমন উত্পাদনগুলিতে ঘটতে পারে এমন বাগগুলি মুখোশযুক্ত করবে। এটি থ্রেড সিঙ্ক্রোনাইজেশনের জন্য সময় নির্ধারণের বিলম্বের ব্যবহার ছেড়ে দেয়, এটি এমন কৌশল যা আমি যখনই মাল্টিথ্রেড কোডের পরীক্ষাগুলি লিখতে হয়েছিল তখন সফলভাবে ব্যবহার করেছি।
যদি বিলম্ব খুব কম হয়, তবে পরীক্ষাটি ভঙ্গুর হয়ে যায়, কারণ সময়সীমার সামান্য পার্থক্য - বিভিন্ন মেশিনের মধ্যে বলুন যেখানে পরীক্ষা চালানো যেতে পারে - সময়টি বন্ধ হতে পারে এবং পরীক্ষাটি ব্যর্থ হতে পারে। আমি সাধারণত যা করেছি তা হ'ল দেরি দিয়ে যা পরীক্ষার ব্যর্থতার কারণ হয়, দেরি বাড়িয়ে দেয় যাতে টেস্টটি আমার ডেভেলপমেন্ট মেশিনে নির্ভরযোগ্যভাবে পাস করে এবং তারপরে বিলম্ব দ্বিগুণ করে যাতে পরীক্ষার অন্যান্য মেশিনে পাস করার ভাল সুযোগ থাকে। এর অর্থ এই নয় যে পরীক্ষাটি একটি ম্যাক্রোস্কোপিক পরিমাণ সময় নেবে, যদিও আমার অভিজ্ঞতায় সতর্কতার সাথে পরীক্ষার নকশা সেই সময়টিকে এক ডজন সেকেন্ডের বেশি সীমাবদ্ধ করতে পারে না। যেহেতু আপনার আবেদনে থ্রেড সমন্বয় কোডের প্রয়োজনের জন্য খুব বেশি জায়গা না থাকা উচিত, এটি আপনার পরীক্ষার স্যুটের জন্য গ্রহণযোগ্য হবে।
অবশেষে, আপনার পরীক্ষায় যে বাগের সংখ্যা ধরা পড়েছিল তার সন্ধান করুন। যদি আপনার পরীক্ষায় ৮০% কোডের কভারেজ থাকে তবে এটি আপনার বাগের প্রায় ৮০% ধরা আশা করা যায়। যদি আপনার পরীক্ষাটি খুব ভালভাবে ডিজাইন করা থাকে তবে কোনও বাগ খুঁজে না পান, তবে যুক্তিসঙ্গত সম্ভাবনা রয়েছে যে আপনার কাছে অতিরিক্ত বাগ নেই যা কেবলমাত্র উত্পাদন ক্ষেত্রে প্রদর্শিত হবে। পরীক্ষায় যদি এক বা দুটি বাগ ধরা পড়ে তবে আপনি ভাগ্যবান হতে পারেন। এর বাইরে এবং আপনি আপনার থ্রেড হ্যান্ডলিং কোডটির একটি সম্পূর্ণ পুনর্লিখন বা এমনকি একটি সম্পূর্ণ পুনর্লিখন বিবেচনা করতে চাইতে পারেন, যেহেতু সম্ভবত কোডটিতে এখনও লুকানো বাগ রয়েছে যা কোডটি উত্পাদন না হওয়া পর্যন্ত খুঁজে পাওয়া খুব কঠিন এবং সম্ভবত তখন ঠিক করা কঠিন।