Asynchronous method invocation
মাল্টিথ্রেডেড কম্পিউটার প্রোগ্রামিং-এ, অ্যাসিঙ্ক্রোনাস মেথড ইনভোকেশন (এ. এম. আই), যা অ্যাসিঙ্ক্রোনাস মেথড কল বা অ্যাসিঙ্ক্রোনাস প্যাটার্ন নামেও পরিচিত, এমন একটি নকশা প্যাটার্ন যেখানে কল করা কোডটি শেষ হওয়ার জন্য অপেক্ষা করার সময় কল সাইটটি অবরুদ্ধ করা হয় না। পরিবর্তে, উত্তর এলে কলিং থ্রেডটি অবহিত করা হয়। উত্তরের জন্য ভোট দেওয়া একটি অবাঞ্ছিত বিকল্প। ব্যাকগ্রাউন্ড এ. এম. আই হল কোনও বস্তুর সম্ভাব্য দীর্ঘস্থায়ী পদ্ধতির অ্যাসিঙ্ক্রোনাস আহ্বানের জন্য একটি নকশা প্যাটার্ন। এটি 1996 সালে অ্যালান ভার্মিউলেন দ্বারা বর্ণিত আই. ও. ইউ ("আমি আপনার কাছে ঋণী") প্যাটার্নের সমতুল্য। বেশিরভাগ প্রোগ্রামিং ভাষায় একটি কল পদ্ধতি সিঙ্ক্রোনাসভাবে কার্যকর করা হয়, অর্থাৎ। মৃত্যুদণ্ডের সুতায় যেখান থেকে এটি আহ্বান করা হয়। যদি পদ্ধতিটি সম্পূর্ণ হতে দীর্ঘ সময় নেয়, যেমন। যেহেতু এটি ইন্টারনেটে ডেটা লোড করছে, তাই পদ্ধতিটি শেষ না হওয়া পর্যন্ত কলিং থ্রেডটি ব্লক করা থাকে। যখন এটি পছন্দসই হয় না, তখন একটি "ওয়ার্কার থ্রেড" শুরু করা এবং সেখান থেকে পদ্ধতিটি আহ্বান করা সম্ভব। বেশিরভাগ প্রোগ্রামিং পরিবেশে এর জন্য অনেকগুলি কোডের প্রয়োজন হয়, বিশেষত যদি অনেকগুলি থ্রেড তৈরির কারণে হতে পারে এমন ওভারহেড এড়ানোর জন্য যত্ন নেওয়া হয়। এএমআই এই সমস্যার সমাধান করে যে এটি একটি "অ্যাসিঙ্ক্রোনাস" বৈকল্পিকের সাথে একটি সম্ভাব্য দীর্ঘ-চলমান ("সিঙ্ক্রোনাস") অবজেক্ট পদ্ধতি বৃদ্ধি করে যা অবিলম্বে ফিরে আসে, অতিরিক্ত পদ্ধতিগুলির সাথে যা সমাপ্তির বিজ্ঞপ্তি গ্রহণ করা সহজ করে তোলে, বা পরবর্তী সময়ে সমাপ্তির জন্য অপেক্ষা করতে পারে। এ. এম. আই-এর একটি সাধারণ ব্যবহার হল অ্যাক্টিভ অবজেক্ট ডিজাইন প্যাটার্ন। বিকল্পগুলি হল সিঙ্ক্রোনাস পদ্ধতির আহ্বান এবং ভবিষ্যতের বস্তু। এ. এম. আই ব্যবহার করতে পারে এমন একটি অ্যাপ্লিকেশনের উদাহরণ হল একটি ওয়েব ব্রাউজার যার সমস্ত ছবি লোড হওয়ার আগেই একটি ওয়েব পৃষ্ঠা প্রদর্শন করা প্রয়োজন। যেহেতু পদ্ধতিটি পদ্ধতির একটি বিশেষ ক্ষেত্রে, তাই অ্যাসিঙ্ক্রোনাস পদ্ধতির আহ্বান অ্যাসিঙ্ক্রোনাস পদ্ধতি কলের একটি বিশেষ ক্ষেত্রে। জাভাতে জাভা ক্লাস ফিউচারটাস্ক ক্লাস একই সমস্যা সমাধানের জন্য ইভেন্ট ব্যবহার করে। এই প্যাটার্নটি এ. এম. আই-এর একটি বৈকল্পিক যার বাস্তবায়ন আরও বেশি ওভারহেড বহন করে, তবে এটি সফ্টওয়্যার উপাদানগুলির প্রতিনিধিত্বকারী বস্তুর জন্য দরকারী। . NET ফ্রেমওয়ার্ক অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং মডেল (এপিএম) প্যাটার্ন (. NET ফ্রেমওয়ার্ক 2-এর আগে ব্যবহৃত) ইভেন্ট-ভিত্তিক অ্যাসিঙ্ক্রোনাস প্যাটার্ন (ইএপি) (. NET ফ্রেমওয়ার্ক 2-এ ব্যবহৃত) টাস্ক-ভিত্তিক অ্যাসিঙ্ক্রোনাস প্যাটার্ন (টিএপি) (. NET ফ্রেমওয়ার্ক 4-এ ব্যবহৃত) উদাহরণ নিম্নলিখিত উদাহরণটি. NET ফ্রেমওয়ার্কে ব্যবহৃত একটি স্ট্যান্ডার্ড এএমআই স্টাইলের উপর ভিত্তি করে। অ্যাকমপ্লিশ পদ্ধতির পরিপ্রেক্ষিতে, দুটি নতুন পদ্ধতি যুক্ত করা হয়ঃ ক্লাস এক্সাম্পল {রেজাল্ট অ্যাকমপ্লিশ (আরজিএস.) আইএসিঙ্ক্রিসাল্ট বিগিনঅকমপ্লিশ (আরজিএস.) রেজাল্ট এন্ডঅকমপ্লিশ (আইএসিঙ্ক্রিসাল্ট এ)।} বেগিনঅকমপ্লিশ-এ কল করার পরে, ক্লায়েন্ট অবিলম্বে অ্যাসিঙ্ক্রিসাল্ট (যা আইএসিঙ্ক্রিসাল্ট ইন্টারফেস প্রয়োগ করে) ধরনের একটি বস্তু পায়, যাতে এটি সম্পর্কহীন কাজের সাথে কলিং থ্রেড চালিয়ে যেতে পারে। সহজতম ক্ষেত্রে, অবশেষে এই ধরনের আর কোনও কাজ নেই, এবং ক্লায়েন্ট এন্ডএকম্প্লিশকে (পূর্বে প্রাপ্ত বস্তুটি পাস করে) কল করে, যা পদ্ধতিটি সম্পূর্ণ না হওয়া পর্যন্ত এবং ফলাফল উপলব্ধ না হওয়া পর্যন্ত ব্লক করে। অ্যাসিঙ্করেসাল্ট অবজেক্ট সাধারণত অন্তত একটি পদ্ধতি প্রদান করে যা ক্লায়েন্টকে জিজ্ঞাসা করতে দেয় যে দীর্ঘমেয়াদী পদ্ধতিটি ইতিমধ্যে সম্পন্ন হয়েছে কি নাঃ ইন্টারফেস আইএসিঙ্করেসাল্ট {বূল হ্যাজ কমপ্লিটড ()।} কেউ একটি কলব্যাক পদ্ধতি বেগিনএকম্প্লিশে পাস করতে পারে, যা দীর্ঘমেয়াদী পদ্ধতিটি সম্পূর্ণ হলে আহ্বান করা হবে। এটি সাধারণত দীর্ঘমেয়াদী পদ্ধতির রিটার্ন মান পেতে এন্ডএকম্প্লিশকে কল করে। কলব্যাক পদ্ধতির একটি সমস্যা হল যে কলব্যাক ফাংশনটি স্বাভাবিকভাবেই ওয়ার্কার থ্রেডে (মূল কলিং থ্রেডের পরিবর্তে) কার্যকর করা হয়, যা রেসের অবস্থার কারণ হতে পারে। . NET ফ্রেমওয়ার্ক ডকুমেন্টেশনে, ইভেন্ট-ভিত্তিক অ্যাসিঙ্ক্রোনাস প্যাটার্ন শব্দটি একটি বিকল্প API শৈলীকে বোঝায় (. NET 2 থেকে উপলব্ধ) যা বেগিনএকম্প্লিশের পরিবর্তে অ্যাকম্প্লিশ অ্যাসিঙ্ক নামে একটি পদ্ধতি ব্যবহার করে। একটি বাহ্যিক পার্থক্য হল যে এই শৈলীতে দীর্ঘমেয়াদী পদ্ধতির রিটার্ন মান সরাসরি কলব্যাক পদ্ধতিতে প্রেরণ করা হয়। আরও গুরুত্বপূর্ণ বিষয় হল, এপিআই কলব্যাক পদ্ধতি চালানোর জন্য একটি বিশেষ প্রক্রিয়া ব্যবহার করে (যা অ্যাকম্প্লিশকম্প্লিটেড টাইপের একটি ইভেন্ট অবজেক্টে থাকে) একই থ্রেডে যেখানে বেগিনএকম্প্লিশ বলা হয়েছিল। এটি রেস অবস্থার বিপদকে দূর করে, এপিআই ব্যবহার করা সহজ এবং সফ্টওয়্যার উপাদানগুলির জন্য উপযুক্ত করে তোলে; অন্যদিকে প্যাটার্নের এই বাস্তবায়ন অতিরিক্ত অবজেক্ট তৈরি এবং ওভারহেড সিঙ্ক্রোনাইজেশনের সাথে আসে। রেফারেন্স আরও পড়া সি #থ্রেড (কম্পিউটিং) সফ্টওয়্যার ডিজাইনের নিদর্শনগুলিতে অ্যাসিঙ্ক্রোনাস পদ্ধতি কল ব্যবহার করে