কোনও ইভেন্ট শ্রোতা কীভাবে কাজ করে?


125

ইউনিটি সম্পর্কে আমার আজকের একটি বক্তৃতা চলাকালীন, আমরা ব্যবহারকারীর একটি বোতাম নিচে রেখে দিলে প্রতিটি ফ্রেম পরীক্ষা করে আমাদের প্লেয়ারের অবস্থান আপডেট করার বিষয়ে আলোচনা করেছি। কেউ বলেছিলেন এটি অদক্ষ এবং তার পরিবর্তে আমাদের ইভেন্ট শ্রোতাদের ব্যবহার করা উচিত।

আমার প্রশ্ন হ'ল প্রোগ্রামিং ভাষা, বা এটি প্রয়োগ করা পরিস্থিতি বিবেচনা না করে কোনও ইভেন্ট শ্রোতা কীভাবে কাজ করে?

আমার অন্তর্দৃষ্টিটি ধরে নিবে যে ইভেন্ট শ্রোতা ক্রমাগত পরীক্ষা করে থাকে যে ঘটনাটি চালিত হয়েছে কিনা, অর্থাত্ আমার দৃশ্যে, ঘটনাটি সরিয়ে দেওয়া হয়েছে কিনা তা প্রতিটি ফ্রেম পরীক্ষা করে দেখার চেয়ে আলাদা হবে না।

শ্রেণিতে আলোচনার ভিত্তিতে, মনে হয় ইভেন্ট শ্রোতা অন্যভাবে কাজ করেন।

কোনও ইভেন্ট শ্রোতা কীভাবে কাজ করে?


34
ইভেন্ট শ্রোতা মোটেও চেক করে না। ঘটনাটি যখন শোনা যায় এটি "শোনা" হয় তখন তা ডাকা হয়।
রবার্ট হার্ভে

13
হ্যাঁ, তবে কীভাবে এটি "শুনুন", এটি কি নিয়মিত পরীক্ষা করা হবে না?
গ্যারি হলিডে

28
নাঃ। "ইভেন্ট শ্রোতা" সম্ভবত শব্দের একটি দুর্বল পছন্দ; এটি আসলে "শ্রবণ" করে না। সমস্ত ইভেন্ট শ্রোতারা যে কোনও ইভেন্টের মতো আগুন জ্বলে ওঠার পরে অপেক্ষা করার অপেক্ষা রাখে। যতক্ষণ না এই ফ্যাশনে ডাকা হয়, এটি কিছুই করে না।
রবার্ট হার্ভে

28
যতবার আপনি বোতামটি চাপছে কিনা তা পরীক্ষা করে দেখার জন্য, আপনার ঘড়ির চক্রের জন্য ব্যয় হয়। ইভেন্ট হ্যান্ডলার (শ্রোতা) কেবলমাত্র তখনই ব্যয় হয় যখন বোতামটি আসলে চাপ দেওয়া হয়।
রবার্ট হার্ভে

45
@ রবার্টহারভে - অগত্যা, "শ্রোতা" এখনও নিম্ন স্তরে ধ্রুবক ভোটগ্রহণের প্রয়োজন। আপনি কেবল কোডের নিজস্ব স্তর থেকে হার্ডওয়ার বিঘ্ন বা যেকোন কিছুতে জটিলতার দিকে ধাক্কা দেন। এবং হ্যাঁ, এটি সাধারণত আরও দক্ষ হবে, তবে শ্রোতার চেয়ে ভোটগ্রহণের চেয়ে উচ্চতর কারণ এটি নয় যে নিম্ন স্তরে ভোট দেওয়া সি # থেকে ভোটদানের চেয়ে আরও দক্ষ এবং আপনার এবং হার্ডওয়্যারের মধ্যে বিমূর্ততার 15 টি স্তর polling
Žদ্রো

উত্তর:


140

আপনার প্রদত্ত পোলিং উদাহরণের বিপরীতে (যেখানে প্রতিটি ফ্রেম বোতামটি পরীক্ষা করা হয়), কোনও ইভেন্ট শ্রোতা বোতামটি আদৌ চাপ দেওয়া হয়েছে কিনা তা পরীক্ষা করে না। পরিবর্তে, বোতামটি চাপ দিলে এটি কল হয়ে যায়।

সম্ভবত "ইভেন্ট শ্রোতা" শব্দটি আপনাকে ছুড়ে দিচ্ছে। এই শব্দটি পরামর্শ দেয় যে "শ্রোতা" সক্রিয়ভাবে শোনার জন্য কিছু করছে, যখন বাস্তবে, এটি কিছু করছে না। "শ্রোতা" কেবল একটি ক্রিয়া বা পদ্ধতি যা ইভেন্টটির সদস্যতা নিয়ে আসে। ইভেন্টটি আগুন লাগলে শ্রোতার পদ্ধতিটি ("ইভেন্ট হ্যান্ডলার") কল হয়ে যায়।

ইভেন্ট প্যাটার্নটির সুবিধা হ'ল যে বোতামটি আসলে ধাক্কা না দেওয়া পর্যন্ত কোনও খরচ নেই। ইভেন্টটি নজরদারি না করেই এইভাবে পরিচালনা করা যেতে পারে কারণ এটি আমরা "হার্ডওয়্যার বিঘ্নিত" বলি যা থেকে সংঘবদ্ধ হয় যা সংক্ষেপে ঘটনাকে চালিত করার জন্য চলমান কোডটিকে আগলে রাখে।

কিছু ইউআই এবং গেমের ফ্রেমওয়ার্কগুলি "বার্তা লুপ" নামে কিছু ব্যবহার করে যা কিছু পরে (সাধারণত স্বল্প) সময়ের মধ্যে মৃত্যুর জন্য ইভেন্টগুলির সারি করে, তবে সেই ইভেন্টটি প্রথম বার্তায় বার্তা লুপটিতে আনার জন্য আপনার এখনও একটি হার্ডওয়্যার বাধা প্রয়োজন।


54
এটি বোতামটি ধাক্কা না দেওয়া পর্যন্ত কোনও ব্যয় না করার কারণটি উল্লেখযোগ্য হতে পারে কারণ বোতামগুলি "বিশেষ", কম্পিউটারে বাধাদান এবং অন্যান্য বিশেষ সুবিধাগুলি রয়েছে যা ওএস ব্যবহার করতে পারে, যা ইউজারস্পেস অ্যাপ্লিকেশনগুলিতে বিমূর্ত থাকে।
10:

46
@whatsisname যখন কেনার ক্ষেত্রে দেখা যায় খুব গভীর ফণা অধীন বাস্তবে খেলা ইঞ্জিন বিঘ্নিত সঙ্গে কাজ করছে না পারে, কিন্তু এখনও পোলিং একটি লুপ একটি ঘটনা উৎস আসলে হয়। এটি ঠিক যে এই পোলিংটি কেন্দ্রীভূত এবং অনুকূলিত হয়েছে, যাতে আরও ইভেন্ট শ্রোতাদের যুক্ত করা অতিরিক্ত পোলিং এবং জটিলতা যোগ না করে ।
gntskn

7
@ পিটারজারকেনস আমি অনুমান করেছিলাম যে গিন্টস্কন মানে গেম ইঞ্জিন লুপের অংশ হিসাবে একটি পদক্ষেপ রয়েছে যা কোনও অসামান্য ইভেন্টের জন্য পরীক্ষা করে। ইভেন্টগুলি প্রতিটি লুপ চলাকালীন অন্য সমস্ত একবারে লুপ ক্রিয়াকলাপের সাথে প্রক্রিয়া করা হবে। ইভেন্টগুলি পরীক্ষা করার জন্য আলাদা লুপ থাকবে না ।
জোশুয়া টেলর

2
@ ভু: এই পোস্টে বিশদ এই স্তরে না যাওয়ার আরও বেশি কারণ reason
রবার্ট হার্ভে

2
@ ভু: আমি কীবোর্ড এবং মাউস বোতামগুলির শারীরিক কীগুলির মতো বোতামগুলির বিষয়ে কথা বলছি।
হোসনেম

52

কোনও ইভেন্ট শ্রোতা কোনও ইমেল নিউজলেটার সাবস্ক্রিপশনের অনুরূপ (আপনি আপডেট পাওয়ার জন্য নিজেকে নিবন্ধিত করুন, যার প্রেরণটি প্রেরক পরবর্তীকালে প্রেরক দ্বারা প্রবর্তন করা হয়েছে) পরিবর্তে অবিচ্ছিন্নভাবে একটি ওয়েব পৃষ্ঠা রিফ্রেশ করার পরিবর্তে (যেখানে আপনি সেই তথ্য হস্তান্তর শুরু করছেন)।

ইভেন্ট ইভেন্টগুলি ব্যবহার করে একটি ইভেন্ট সিস্টেম প্রয়োগ করা হয়, যা গ্রাহকদের একটি তালিকা পরিচালনা করে। আগ্রহী অবজেক্টস (যার নাম গ্রাহক , শ্রোতা , প্রতিনিধি , ইত্যাদি) কোনও ইভেন্টের মাধ্যমে নিজেকে ইভেন্টে সাবস্ক্রাইব করে এমন একটি কল করে কোনও ইভেন্ট সম্পর্কে অবহিত হওয়ার জন্য তাদের সাবস্ক্রাইব করতে পারে, যার কারণে ইভেন্টটি তাদের তালিকায় যুক্ত করে। যখনই ঘটনা বহিস্কার (পরিভাষা এছাড়াও অন্তর্ভুক্ত করতে পারে: বলা , আলোড়ন , প্রার্থনা , চালানো , ইত্যাদি), এটা গ্রাহক প্রতিটি উপযুক্ত পদ্ধতি ডেকে ঘটনার অবহিত যাই হোক না কেন প্রাসঙ্গিক তথ্য তারা বুঝতে প্রয়োজন বরাবর ক্ষণস্থায়ী কি হলো.


38

সংক্ষিপ্ত, অসন্তুষ্টির উত্তরটি হ'ল অ্যাপ্লিকেশনটি একটি সংকেত (ইভেন্ট) গ্রহণ করে এবং রুটিনটি কেবল সেই সময়ে ডাকা হয়।

আর এর ব্যাখ্যায় কিছুটা বেশি জড়িত।

ক্লায়েন্ট ইভেন্টগুলি কোথা থেকে আসে?

প্রতিটি আধুনিক আবেদন ইনার, সাধারণত আধা লুক্কায়িত "ঘটনা লুপ" যে সঠিক উপাদান যে তাদের পাওয়া উচিত ঘটনা পাঠাবে হয়েছে। উদাহরণস্বরূপ, একটি "ক্লিক" ইভেন্ট বাটনে প্রেরণ করা হয় যার পৃষ্ঠটি বর্তমান মাউস স্থানাঙ্কগুলিতে দৃশ্যমান। এটি সরল স্তরে। কিছু ঘটনা এবং কিছু উপাদান সরাসরি বার্তা পাবে বলে বাস্তবে ওএস এই প্রেরণে প্রচুর কাজ করে।

অ্যাপ্লিকেশন ইভেন্টগুলি কোথা থেকে আসে?

অপারেটিং সিস্টেমগুলি ইভেন্টগুলি প্রেরণ করে। তারা তাদের নিজস্ব ড্রাইভার দ্বারা অবহিত হয়ে প্রতিক্রিয়াশীলভাবে এটি করে।

ড্রাইভাররা কীভাবে ইভেন্ট তৈরি করে?

আমি কোনও বিশেষজ্ঞ নই, তবে নিশ্চিতভাবেই কিছু সিপিইউ বাধা ব্যবহার করে: তারা যে হার্ডওয়্যারটি নিয়ন্ত্রণ করে সেগুলি সিপিইউতে একটি পিন উত্থাপন করে যখন নতুন ডেটা পাওয়া যায়; সিপিইউ চালকটিকে গুলি ছুঁড়ে দেয় যা আগত ডেটা পরিচালনা করে যা শেষ পর্যন্ত প্রেরণের জন্য একটি ইভেন্টের (সারি) উত্পন্ন করে এবং তারপরে ওএস-এ ফিরে নিয়ন্ত্রণ ফিরিয়ে দেয়।

সুতরাং আপনি যেমন দেখেন, আপনার অ্যাপ্লিকেশনটি সত্যই পুরোপুরি মোটেই চলছে না। এটি এমন অনেকগুলি প্রক্রিয়া যা ওএস দ্বারা চালিত হয়ে যায় (সাজ্টা) ঘটনাগুলি ঘটতে থাকে, তবে বাকি সময় কিছুই করে না।


Once এখানে উল্লেখযোগ্য ব্যতিক্রম রয়েছে যেমন একবারে গেমস যা কিছু ভিন্নভাবে করতে পারে


10
এই উত্তরটি ব্যাখ্যা করে যে কোনও ব্রাউজারে মাউস ক্লিক ইভেন্টগুলির জন্য কেন কোনও পোলিং জড়িত নেই। হার্ডওয়্যার বিঘ্ন ঘটায় => ড্রাইভার এটি ওএস ইভেন্টের সাথে সমাধান করে => ব্রাউজার এটি ডিওএম ইভেন্টে সমাধান করে => জেএস ইঞ্জিন সেই ইভেন্টের জন্য শ্রোতাদের চালায়।
টিবিস

@ টিবোস এটি কীবোর্ড ইভেন্টগুলি, টাইমার ইভেন্টগুলি, রঙের ইভেন্টগুলি ইত্যাদির ক্ষেত্রেও প্রয়োগ করে
Sklivvz

19

পরিভাষা

  • ইভেন্ট : ঘটতে পারে এমন এক ধরণের জিনিস।

  • ইভেন্ট গুলিবর্ষণ : একটি ইভেন্টের একটি নির্দিষ্ট ঘটনা; একটি ঘটনা ঘটছে।

  • ইভেন্ট শ্রোতা : এমন কিছু যা ইভেন্টের জালিয়াতির জন্য সন্ধান করে।

  • ইভেন্ট হ্যান্ডলার : একটি ইভেন্ট শ্রোতা একটি ইভেন্টের ফায়ারিং সনাক্ত করে।

  • ইভেন্ট গ্রাহক : ইভেন্ট হ্যান্ডলারের কল করার একটি প্রতিক্রিয়া।

এই সংজ্ঞাগুলি প্রয়োগের উপর নির্ভর করে না, তাই এগুলি বিভিন্ন উপায়ে প্রয়োগ করা যেতে পারে।

এর মধ্যে কয়েকটি শব্দের সাধারণত প্রতিশব্দ হিসাবে ভুল হয় কারণ ব্যবহারকারীদের মধ্যে প্রায়শই পার্থক্য করার প্রয়োজন হয় না।

সাধারণ পরিস্থিতি

  1. প্রোগ্রামিং-লজিক ইভেন্ট।

    • ঘটনা যখন কিছু পদ্ধতি বলা পরার।

    • একটি ইভেন্ট ফায়ারিং সেই পদ্ধতির একটি বিশেষ কল।

    • ঘটনা শ্রোতা ইভেন্ট পদ্ধতি প্রতিটি ঘটনা অগ্নিসংযোগ যে ইভেন্ট হ্যান্ডলার কল বলা হচ্ছে একটি হুক হয়।

    • ইভেন্ট হ্যান্ডলার ঘটনা গ্রাহক একটি সংগ্রহ কল।

    • ঘটনা গ্রাহক (গুলি) সঞ্চালন যাই হোক না কেন কর্ম (গুলি) সিস্টেম ইভেন্টের সংঘটন প্রতিক্রিয়ায় ঘটতে মানে।

  2. বাহ্যিক ঘটনা।

    • ঘটনা একটি বহিস্থিত ঘটনাকেই যে observables থেকে অনুমিত হতে পারে।

    • একটি ইভেন্টের গুলি ছড়িয়ে দেওয়া হয় যখন বাহ্যিক ঘটনা ঘটেছিল বলে স্বীকৃত হতে পারে।

    • ঘটনা শ্রোতা একরকম ঘটনা গুলির সনাক্ত প্রায়ই পোলিং দ্বারা পর্যবেক্ষণযোগ্য (গুলি), তারপর, এটা এমন একটি ইভেন্টের অগ্নিসংযোগ সনাক্ত উপর ইভেন্ট হ্যান্ডলার কল।

    • ইভেন্ট হ্যান্ডলার ঘটনা গ্রাহক একটি সংগ্রহ কল।

    • ঘটনা গ্রাহক (গুলি) সঞ্চালন যাই হোক না কেন কর্ম (গুলি) সিস্টেম ইভেন্টের সংঘটন প্রতিক্রিয়ায় ঘটতে মানে।

পোলিং বনাম বনাম ইভেন্টের ফায়ারিং প্রক্রিয়াটিতে হুক প্রবেশ করানো

অন্যদের দ্বারা তৈরি করা বক্তব্যটি হ'ল ভোট দেওয়ার প্রায়শই প্রয়োজন হয় না। এর কারণ ইভেন্ট শ্রোতারা স্বয়ংক্রিয়ভাবে ইভেন্ট হ্যান্ডলারকে কল করে ইভেন্ট প্রয়োগকারীদের প্রয়োগ করা যেতে পারে, যখন ইভেন্টগুলি সিস্টেম-স্তরের ঘটনাগুলি ঘটে তখন প্রায়শই জিনিসগুলি বাস্তবায়নের সবচেয়ে কার্যকর উপায়।

সাদৃশ্য অনুসারে, ডাক কর্মী যদি আপনার দরজায় নক করে এবং সরাসরি আপনাকে মেইলটি হস্তান্তর করে তবে আপনাকে প্রতিদিন মেইলের জন্য আপনার মেইল ​​বাক্সটি পরীক্ষা করার দরকার নেই।

তবে ইভেন্ট শ্রোতারাও ভোট দিয়ে কাজ করতে পারবেন। ভোটদানের জন্য প্রয়োজনীয় কোনও নির্দিষ্ট মান বা অন্যান্য পর্যবেক্ষণযোগ্য পরীক্ষা করা প্রয়োজন হয় না; এটা আরও জটিল হতে পারে। তবে সামগ্রিকভাবে, যখন কোনও ইভেন্ট এমন ঘটেছিল যে এর প্রতিক্রিয়া জানাতে পারে তখন ভোট দেওয়ার বিষয়টি বিবেচনা করা।

সাদৃশ্য অনুসারে, ডাক কর্মী যখন এতে কেবল মেল ফেলে দেয় তখন আপনাকে প্রতিদিন আপনার মেইল ​​বাক্সটি পরীক্ষা করতে হবে। আপনি যদি ডাক কর্মীকে আপনার দরজায় কড়া নাড়ানোর নির্দেশ দিতে পারেন তবে আপনাকে এই পোলিংয়ের কাজটি করতে হবে না, তবে এটি প্রায়শই সম্ভাবনা নয়।

চেইন ইভেন্ট লজিক

অনেক প্রোগ্রামিং ভাষায়, আপনি একটি ইভেন্ট লিখতে পারেন যা কেবল তখনই বলা হয় যখন কীবোর্ডের একটি কী টিপে দেওয়া হয় বা নির্দিষ্ট সময়ে। যদিও এটি বাহ্যিক ইভেন্ট, আপনার তাদের জন্য জরিপ করার দরকার নেই। কেন?

এটি কারণ অপারেটিং সিস্টেমটি আপনার পক্ষে ভোটদান করছে। উদাহরণস্বরূপ, উইন্ডোজ কীবোর্ডের রাজ্যের পরিবর্তনের মতো স্টাফগুলি পরীক্ষা করে এবং যদি এটি সনাক্ত করে তবে এটি ইভেন্টের গ্রাহকদের কল করবে। সুতরাং, আপনি যখন কোনও কীবোর্ড প্রেস ইভেন্টে সদস্যতা নিচ্ছেন, আপনি আসলে এমন একটি ইভেন্টের সদস্যতা নিচ্ছেন যা পোলিং হওয়া কোনও ইভেন্টের নিজেই গ্রাহক।

উপমা অনুসারে, বলুন যে আপনি একটি অ্যাপার্টমেন্ট কমপ্লেক্সে বাস করছেন এবং একটি ডাক কর্মী একটি সাম্প্রদায়িক মেইল ​​রসিদ অঞ্চলে মেল ফেলে দেয় drops তারপরে, একটি অপারেটিং সিস্টেম-এর মতো কর্মী প্রত্যেকের জন্য সেই মেলটি পরীক্ষা করে, যারা কিছু পেয়েছিল তাদের অ্যাপার্টমেন্টগুলিতে মেল সরবরাহ করে can এটি অন্য সকলকে মেল-প্রাপ্তির ক্ষেত্রটি পোল করার ঝামেলা থেকে রেহাই দেয়।


আমার অন্তর্দৃষ্টিটি ধরে নিবে যে ইভেন্ট শ্রোতা ক্রমাগত পরীক্ষা করে থাকে যে ঘটনাটি চালিত হয়েছে কিনা, অর্থাত্ আমার দৃশ্যে, ঘটনাটি সরিয়ে দেওয়া হয়েছে কিনা তা প্রতিটি ফ্রেম পরীক্ষা করে দেখার চেয়ে আলাদা হবে না।

শ্রেণিতে আলোচনার ভিত্তিতে, মনে হয় ইভেন্ট শ্রোতা অন্যভাবে কাজ করেন।

কোনও ইভেন্ট শ্রোতা কীভাবে কাজ করে?

আপনি যেমন সন্দেহ করেছেন, কোনও ইভেন্ট ভোট দেওয়ার মাধ্যমে কাজ করতে পারে । এবং যদি কোনও ইভেন্ট কোনওভাবে বাহ্যিক ঘটনার সাথে সম্পর্কিত হয়, উদাহরণস্বরূপ একটি কীবোর্ড কী টিপে দেওয়া হচ্ছে, তবে পোলিংটি কোনও পর্যায়ে ঘটতে হবে।

এটি ঠিক এটি সত্য যে ইভেন্টগুলিতে ভোট দেওয়ার সাথে জড়িত থাকার প্রয়োজন হয় না। উদাহরণস্বরূপ, যদি ইভেন্টটি এমন হয় যখন একটি বোতাম টিপানো হয়, তবে সেই বাটনের ইভেন্ট শ্রোতা এমন একটি পদ্ধতি যা জিইউআই ফ্রেমওয়ার্কটি কল করতে পারে যখন এটি নির্ধারণ করে যে মাউস ক্লিক বোতামটি হিট করে। এই ক্ষেত্রে, মাউস ক্লিক সনাক্ত করার জন্য এখনও পোলিং হওয়া দরকার ছিল, তবে মাউস-শ্রোতা ইভেন্ট-শৃঙ্খলার মাধ্যমে আদিম ভোটদান ব্যবস্থার সাথে যুক্ত আরও একটি প্যাসিভ উপাদান।

আপডেট: নিম্ন-স্তরের হার্ডওয়্যার পোলিংয়ে

এটি প্রমাণিত হয়েছে যে ইউএসবি ডিভাইস এবং অন্যান্য আধুনিক যোগাযোগ প্রোটোকলগুলির মধ্যে ইন্টারঅ্যাকশনগুলির জন্য একটি বরং আকর্ষণীয় নেটওয়ার্কিংয়ের মতো প্রোটোকল সেট রয়েছে, যা কি-বোর্ড এবং ইঁদুর সহ আই / ও ডিভাইসগুলিকে অ্যাডহক টপোলজগুলিতে জড়িত করে তোলে।

মজার বিষয় হল, " বাধা " মোটামুটি প্রয়োজনীয়, সিঙ্ক্রোনাস জিনিস, তাই তারা অ্যাডহক নেটওয়ার্কিং টপোলজিগুলি পরিচালনা করে না । এটির সমাধানের জন্য, " বিঘ্নিতগুলি " অ্যাসিঙ্ক্রোনাস উচ্চ-অগ্রাধিকার প্যাকেটে সাধারণীকরণ করা হয়েছে " ইন্টারপট লেনদেন " (ইউএসবি প্রসঙ্গে) বা " বার্তা-সংকেতযুক্ত বাধা " (পিসিআই এর প্রসঙ্গে)। এই প্রোটোকলটি একটি ইউএসবি স্পেসিফিকেশনে বর্ণিত হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

- " চিত্র 8-31। " ইউনিভার্সাল সিরিয়াল বাস স্পেসিফিকেশন, রিভিশন 2.0 " , মুদ্রিত পৃষ্ঠা -222 এ বাল্ক / কন্ট্রোল / ইন্টারপট আউট ট্রানজেকশন হোস্ট স্টেট মেশিন " ; পিডিএফ-পৃষ্ঠা-250 (2000-04-27)

সংক্ষেপে মনে হচ্ছে I / O ডিভাইস এবং যোগাযোগের উপাদানগুলি (ইউএসবি হাবের মতো) মূলত নেটওয়ার্ক ডিভাইসের মতো কাজ করে। সুতরাং, তারা বার্তা প্রেরণ করে যার জন্য তাদের বন্দরগুলি পোলিংয়ের প্রয়োজন হয়। এটি ডেডিকেটেড হার্ডওয়্যার লাইনের প্রয়োজনীয়তা হ্রাস করে।

উইন্ডোজের মত অপারেটিং সিস্টেম পোলিং প্রক্রিয়া নিজেই হ্যান্ডেল বলে মনে হচ্ছে, যেমন বর্ণনা অনুযায়ী জন্য MSDN ডকুমেন্টেশন USB_ENDPOINT_DESCRIPTORএর কীভাবে নিয়ন্ত্রণ করতে বর্ণনা কিভাবে প্রায়ই উইন্ডোজ নির্বাচনে বিঘ্ন / সমসময়ান্তরী বার্তাগুলির জন্য একটি USB হোস্ট কন্ট্রোলার:

bIntervalমান বিঘ্ন আইসোক্রোনাস এন্ড পয়েন্ট জন্য পোলিং ব্যবধান রয়েছে। অন্যান্য ধরণের শেষ পয়েন্টের জন্য, এই মানটিকে উপেক্ষা করা উচিত। এই মানটি ফার্মওয়্যারটিতে ডিভাইসের কনফিগারেশনকে প্রতিফলিত করে। চালকরা এটি পরিবর্তন করতে পারবেন না।

ভোটদানের ব্যবধান, ডিভাইসের গতি এবং হোস্ট কন্ট্রোলারের ধরণের সাথে একত্রে যে ফ্রিকোয়েন্সিটি চালককে বাধা বা আইসোক্রোনাস স্থানান্তর শুরু করতে হবে তা নির্ধারণ করে। মানটি bIntervalএকটি নির্দিষ্ট সময়কে উপস্থাপন করে না। এটি একটি আপেক্ষিক মান, এবং আসল ভোটদানের ফ্রিকোয়েন্সিটি ডিভাইস এবং ইউএসবি হোস্ট কন্ট্রোলার কম, পূর্ণ বা উচ্চ গতিতে কাজ করে কিনা তার উপরও নির্ভর করবে।

- "USB_ENDPOINT_DESCRIPTOR কাঠামো" , হার্ডওয়্যার ডেভ সেন্টার, মাইক্রোসফ্ট

ডিসপ্লেপোর্টের মতো নতুন মনিটরের সংযোগ প্রোটোকলগুলিও এটি করে বলে মনে হচ্ছে:

মাল্টি-স্ট্রিম ট্রান্সপোর্ট (এমএসটি)

  • এমএসটি (মাল্টি-স্ট্রিম ট্রান্সপোর্ট) ডিসপ্লেপোর্টে যোগ করা হয়েছে ভার .১.২

    • কেবলমাত্র এসএসটি (সিঙ্গল-স্ট্রিম ট্রান্সপোর্ট) ভার্.1.1.1 এ উপলব্ধ ছিল
  • এমএসটি একক সংযোজকের উপর একাধিক এ / ভি স্ট্রিম স্থানান্তর করে

    • 63 টি স্ট্রিম পর্যন্ত; "প্রতি লেন স্ট্রিম" নয়

      • এই ট্রান্সপোর্টেড স্ট্রিমগুলির মধ্যে কোনও সুসংগততা অনুমান করা হয়নি; একটি স্ট্রিম একটি ফাঁকা সময়ের মধ্যে থাকতে পারে অন্যগুলি না থাকলে
    • একটি সংযোগ ভিত্তিক পরিবহন

      • স্ট্রিম ট্রান্সমিশন শুরুর আগে AUX CH overs এর উপর বার্তা লেনদেনের মাধ্যমে একটি স্ট্রিম উত্স থেকে লক্ষ্য স্ট্রিম সিঙ্কের দিকে পথ

      • বাকি স্ট্রিমগুলি প্রভাবিত না করে কোনও স্ট্রিম যুক্ত / মোছা

এখানে চিত্র বর্ণনা লিখুন

"ডিসপ্লেপোর্টটিএম ভার.1.1.2 ওভারভিউ" (2010-12-06) থেকে স্লাইড # 14

এই বিমূর্ততা কিছু ঝরঝরে বৈশিষ্ট্যগুলির জন্য মঞ্জুরি দেয় যেমন একটি সংযোগ থেকে 3 টি মনিটর চালানো:

ডিসপ্লেপোর্ট মাল্টি-স্ট্রিম ট্রান্সপোর্ট এছাড়াও তিন বা ততোধিক ডিভাইস একসাথে সংযুক্ত করার অনুমতি দেয় তবে বিপরীতে কম "ভোক্তা" -মুখী কনফিগারেশন: একসাথে একক আউটপুট পোর্ট থেকে একাধিক ডিসপ্লে ড্রাইভিং করে।

- "ডিসপ্লেপোর্ট" , উইকিপিডিয়া

ধারণামূলকভাবে, এ থেকে দূরে সরে যাওয়ার বিষয়টি হ'ল পোলিং পদ্ধতিগুলি আরও সাধারণীকরণযোগ্য সিরিয়াল যোগাযোগের জন্য অনুমতি দেয়, আপনি যখন আরও সাধারণ কার্যকারিতা চান তখন দুর্দান্ত। সুতরাং, হার্ডওয়্যার এবং ওএস লজিকাল সিস্টেমের জন্য প্রচুর পোলিং করে। তারপরে, ইভেন্টগুলিতে সাবস্ক্রাইব করা গ্রাহকরা তাদের নিজস্ব পোলিং / বার্তা-পাসিং প্রোটোকল না লিখে নিম্ন স্তরের সিস্টেম দ্বারা তাদের জন্য পরিচালিত সেই বিবরণগুলি উপভোগ করতে পারবেন।

শেষ পর্যন্ত, কী-প্রেসগুলির মতো ইভেন্টগুলি সফ্টওয়্যার-স্তরের অত্যাবশ্যক ইভেন্ট-ফায়ারিংয়ের যন্ত্রে পৌঁছানোর আগে ইভেন্টগুলির একটি বরং আকর্ষণীয় সিরিজের মধ্য দিয়ে যায় বলে মনে হয়।


আপনার শেষ অনুচ্ছেদের বিষয়ে, নিম্ন স্তরে সাধারণত কোনও পোলিং হয় না, অপারেটিং সিস্টেম পেরিফেরিয়াল ডিভাইস দ্বারা চালিত হার্ডওয়্যার বিঘ্নগুলির জন্য প্রতিক্রিয়া জানায়। একটি কম্পিউটারে সাধারণত অনেকগুলি সংযুক্ত ডিভাইস থাকে (মাউস, কীবোর্ড, ডিস্ক ড্রাইভ, নেটওয়ার্ক কার্ড) এবং সেগুলির পোলিং খুব অকার্যকর হবে।
বারমার

তবে, মেল বিতরণের সাথে আপনার উপমাগুলি ঠিক কীভাবে আমি উচ্চ স্তরের ক্রিয়াকলাপটি ব্যাখ্যা করব explain
বারমার

1
@ বারমার ইয়া জানেন, ডিভাইসগুলি যখন ইউএসবি সংযোগগুলিতে স্থানান্তরিত হয়েছিল, তখন তারা কীভাবে ভোটদানের প্রয়োজনীয়তা (কোনও ইউএসবি কীবোর্ডের মতো) সরাসরি জড়িত বাধা (যেমন একটি পিএস / 2 কীবোর্ড দেয়) থেকে শুরু হয়েছিল এবং কিছু সূত্র দাবি করেছে ভোটগ্রহণ সিপিইউ দ্বারা সম্পন্ন হয়েছে। তবে, অন্যান্য উত্স দাবি করে যে এটি একটি বিশেষায়িত নিয়ন্ত্রকের উপর সম্পন্ন হয়েছে যা ভোটদানকে সিপিইউর জন্য বাধায় রূপান্তর করে।
নাট

@ বারমার আপনি কি জানবেন কোনটা সঠিক? আমি সম্ভবত আরও উত্সগুলি দেখেছি যে সিপিইউ অন্যথায় তুলনায় পোলিং করে, তবে এটির জন্য একটি বিশেষায়িত নিয়ামক আরও বুদ্ধিমান বলে মনে হবে। আমি বলতে চাইছি, আমার মনে হয় আরডিনো এবং অন্যান্য এম্বেড থাকা ডিভাইসগুলিতে সিপিইউর পোলিংয়ের প্রয়োজন হয়, তবে আমি x86-টাইপ ডিভাইসগুলি সম্পর্কে জানি না।
নাট

1
যদি কেউ নিশ্চিত করতে পারেন যে আমি এই উত্তরটি আপডেট করতে পারি, আমি মনে করি যে আধুনিক আই / ও ডিভাইসগুলি, যেমন ইউএসবি দ্বারা সংযুক্ত, সরাসরি মেমোরিতে লিখুন , সিপিইউ এর নিয়ন্ত্রণকে বাইপাস করে (যে কারণে তারা দ্রুত / দক্ষ এবং সুরক্ষা উভয়ই বিপত্তি ) তারপরে, নতুন বার্তাগুলি পরীক্ষা করার জন্য মেমরিটি পোল করার জন্য একটি আধুনিক ওএসের প্রয়োজন।
নাট

8

টান বনাম পুশ

কোনও ঘটনা ঘটেছে কিনা, বা কোনও নির্দিষ্ট রাজ্যে পৌঁছেছে কিনা তা যাচাই করার জন্য দুটি প্রধান কৌশল রয়েছে। উদাহরণস্বরূপ, একটি গুরুত্বপূর্ণ বিতরণের জন্য অপেক্ষা করুন কল্পনা করুন:

  • টানুন : প্রতি 10 মিনিটে, আপনার মেলবক্সে যান এবং এটি বিতরণ করা হয়েছে কিনা তা পরীক্ষা করে দেখুন,
  • পুশ করুন : ডেলিভারি লোক যখন ডেলিভারি করেন তখন আপনাকে ফোন করতে বলুন।

খিঁচ পদ্ধতির (এছাড়াও পোলিং বলা হয়) সহজ হল: আপনি কোন বিশেষ বৈশিষ্ট্য ছাড়াই এটি বাস্তবায়ন করতে পারে। অন্যদিকে, এটি প্রায়শই কম দক্ষ হয় যেহেতু আপনি তাদের জন্য দেখানোর মতো কিছুই না দিয়ে অতিরিক্ত চেক করার ঝুঁকি নেন।

অন্যদিকে, পুশ অ্যাপ্রোচটি সাধারণত আরও কার্যকর: আপনার কোডটি তখনই চালিত হয় যখন তার কিছু করার থাকে। অন্যদিকে, এটি আপনার শ্রোতা / পর্যবেক্ষক / কলব্যাক 1 রেজিস্ট্রেশন করার জন্য একটি ব্যবস্থা থাকা প্রয়োজন ।

1 আমার মেলম্যান সাধারণত দুর্ভাগ্যক্রমে এ জাতীয় ব্যবস্থাটির অভাব বোধ করে।


1

সুনির্দিষ্টভাবে unityক্য সম্পর্কে - প্লেয়ারের ইনপুটটি প্রতিটি ফ্রেমে পোলিং করা ছাড়া অন্য কোনও উপায় নেই। ইভেন্ট শ্রোতা তৈরি করতে, আপনার পোলিংয়ের জন্য এখনও "ইভেন্ট সিস্টেম" বা "ইভেন্ট ম্যানেজার" এর মতো কোনও বিষয় প্রয়োজন হবে, সুতরাং এটি কেবল সমস্যাটিকে অন্য শ্রেণীর দিকে ঠেলে দেবে।

মঞ্জুর, একবার আপনার ইভেন্ট ম্যানেজার হয়ে গেলে, প্রতিটি ফ্রেমে আপনার কাছে কেবল একটি ক্লাসের পোলিং থাকে তবে এটি কোনও স্পষ্ট পারফরম্যান্স সুবিধা দেয় না, এখন থেকে এই শ্রেণীর শ্রোতাদের পুনরাবৃত্তি করতে হবে এবং তাদের কল করতে হবে, যা আপনার গেমের উপর নির্ভর করে ডিজাইন (যেমন, সেখানে কত শ্রোতা রয়েছে এবং প্লেয়ারটি প্রায়শই ইনপুট কীভাবে ব্যবহার করে) আসলে আরও ব্যয়বহুল হতে পারে।

এগুলি ছাড়াও, স্বর্ণের নিয়মটি মনে রাখবেন - অকালীন অপটিমাইজেশন হ'ল সমস্ত অশুভের মূল , যা বিশেষত ভিডিও গেমগুলিতে সত্য, যেখানে প্রায়শই প্রতিটি ফ্রেমের রেন্ডারিংয়ের প্রক্রিয়া এত বেশি ব্যয় হয় যে এর মতো ছোট স্ক্রিপ্টের অপটিমাইজেশন সম্পূর্ণ তুচ্ছ are


আমি কেন্দ্রীয় ইভেন্টের লুপটিকে অপ্টিমাইজেশন হিসাবে দেখতে পাচ্ছি না তবে আরও কোডের ভিত্তিতে ছড়িয়ে দেওয়ার ভোটের বিপরীতে আরও পাঠযোগ্য, বোধগম্য কোডটি লিখছি। এটি গেম ইঞ্জিনের পোলিং থেকে না আসা "সিন্থেটিক" ইভেন্ট এবং ইভেন্টগুলিকেও মঞ্জুরি দেয়।
ব্ল্যাকজ্যাক

@ ব্ল্যাকজ্যাক আমি সম্মত হই এবং আমি সাধারণত নিজেই এইভাবে কোড করি তবে ওপি কার্য সম্পাদন সম্পর্কে জিজ্ঞাসা করেছিল। বিটিডব্লিউ, ইউনিটির আশ্চর্যজনকভাবে অনেকগুলি সন্দেহজনক কোড ডিজাইনের সিদ্ধান্ত রয়েছে যেমন প্রায় সব জায়গায় স্থির ফাংশন থাকার মতো।
ডুনো

1

আপনার ওএস / ফ্রেমওয়ার্কে যদি আপনার কিছু সমর্থন না থাকে যা বাটন পুশ বা টাইমার ওভারফ্লো বা বার্তা আগমনের মতো ইভেন্টগুলি পরিচালনা করে - আপনি যে কোনও উপায়ে (নীচে কোথাও) পোলিং ব্যবহার করে এই ইভেন্ট শ্রোতার প্যাটার প্রয়োগ করতে হবে।

তবে এই মুহুর্তে আপনার ডিজাইনের ধরণটি থেকে দূরে সরে যাবেন না কারণ এখনই আপনার কাছে কোনও কার্যকারিতা সুবিধা নেই। ইভেন্ট হ্যান্ডলিংয়ের জন্য যদি আপনার আন্ডারলাইং সমর্থন না থাকে তবে আপনার এটিকে কেন ব্যবহার করা উচিত সে কারণগুলি এখানে।

  1. কোডটি আরও পরিষ্কার এবং আরও বিচ্ছিন্ন দেখাচ্ছে (যদি সঠিকভাবে প্রয়োগ করা হয় তবে)
  2. ইভেন্ট হ্যান্ডলারের উপর ভিত্তি করে কোডগুলি ভাল স্ট্যান্ড পরিবর্তনগুলি (যেহেতু আপনি সাধারণত ইভেন্ট হ্যান্ডলারগুলির মধ্যে কিছু পরিবর্তন করেন)
  3. যদি আপনি অন্তর্ভুক্ত ইভেন্ট সমর্থন সহ প্ল্যাটফর্মে যেতে চান - আপনি আপনার বিদ্যমান ইভেন্ট হ্যান্ডলারের পুনরায় ব্যবহার করতে পারেন এবং পোলিং কোড থেকে মুক্তি পেতে পারেন।

উপসংহার - আপনি আলোচনায় অংশ নেওয়ার পক্ষে ভাগ্যবান এবং ভোটদানের একটি বিকল্প শিখেছেন। বাস্তবে এই ধারণাটি প্রয়োগ করার সুযোগের সন্ধান করুন এবং কোডটি কত মার্জিত হতে পারে তা আপনি প্রশংসা করবেন।


1

বেশিরভাগ ইভেন্টের লুপগুলি অপারেটিং সিস্টেমের সরবরাহিত কয়েকটি পোলিং মাল্টিপ্লেক্সিং আদিমের উপরে নির্মিত হয়। লিনাক্সে, সেই আদিমটি প্রায়শই poll(2) সিস্টেম কল (তবে এটি পুরানো হতে পারে select)। জিইউআই অ্যাপ্লিকেশনগুলিতে, ডিসপ্লের সার্ভারটি (যেমন: Xorg , বা ওয়েল্যান্ড ) আপনার অ্যাপ্লিকেশনটির সাথে যোগাযোগ করছে (একটি সকেট (7) বা পাইপ (7) )। এক্স উইন্ডো সিস্টেম প্রোটোকল এবং আর্কিটেকচার সম্পর্কেও পড়ুন ।

এই ধরনের পোলিং আদিমগুলি দক্ষ; কিছু ইনপুট হয়ে গেলে (এবং কিছু বিঘ্নিত হ্যান্ডেল করা হয়) তখন কার্নেলটি বাস্তবে আপনার প্রক্রিয়া জাগ্রত করে।

কংক্রিটের সাথে, আপনার উইজেট টুলকিট লাইব্রেরিটি আপনার প্রদর্শন সার্ভারের সাথে যোগাযোগ করে, বার্তাগুলির জন্য অপেক্ষা করে এবং এই বার্তাগুলি আপনার উইজেটে প্রেরণ করে। কিউটি বা জিটিকে-র মতো টুলকিট লাইব্রেরিগুলি বেশ জটিল (কয়েক মিলিয়ন লাইনের উত্স কোড)। আপনার কীবোর্ড এবং মাউস কেবল ডিসপ্লের সার্ভার প্রক্রিয়া দ্বারা পরিচালিত হয় (যা ক্লায়েন্ট অ্যাপ্লিকেশনগুলিতে প্রেরিত ইভেন্ট বার্তাগুলিতে যেমন ইনপুটগুলি অনুবাদ করে)।

(আমি সরলীকরণ করছি; আসলে জিনিসগুলি আরও জটিল)


1

বিশুদ্ধরূপে পোলিং ভিত্তিক সিস্টেমে এমন সাবসিস্টেম যা জানতে চায় যে যখন কোনও নির্দিষ্ট ক্রিয়া ঘটে তখন কোনও ক্রিয়াকলাপ ঘটতে পারে এমন কোনও সময় কোনও কোড চালানো দরকার। যদি এমন অনেকগুলি সাবসিস্টেম থাকে যা প্রত্যেকের 10 মিলিমিটারের মধ্যে-অ-প্রয়োজনে ঘটে যাওয়া অনন্য ইভেন্টের মধ্যে প্রতিক্রিয়া দেখাতে হয় তবে তাদের ঘটনাটি ঘটেছে কিনা তা কমপক্ষে 100 বার / সেকেন্ডে পরীক্ষা করা উচিত। যদি এই সাবসিস্টেমগুলি বিভিন্ন থ্রেডে (বা আরও খারাপ, প্রক্রিয়াগুলি) প্রক্রিয়াগুলিতে থাকে তবে এর জন্য প্রতিটি থ্রেডে স্যুইচিং বা 100x / সেকেন্ডে প্রক্রিয়া প্রয়োজন।

অ্যাপ্লিকেশনগুলির জন্য অ্যাপ্লিকেশন যে জিনিসগুলির জন্য নজর রাখবে তার মধ্যে অনেকগুলি একই রকম হয়, তবে এটি একটি কেন্দ্রিয়ায়িত একটি মনিটরিং সাবসিস্টেম - সম্ভবত টেবিল চালিত - অধিকতর দক্ষ হতে পারে যা অনেকগুলি জিনিস দেখতে পারে এবং সেগুলির কোনও পরিবর্তন হয়েছে কিনা তা পর্যবেক্ষণ করতে পারে। যদি 32 টি স্যুইচ থাকে, উদাহরণস্বরূপ, প্ল্যাটফর্মটিতে সমস্ত 32 টি স্যুইচ একবারে একটি শব্দে পড়ার ফাংশন থাকতে পারে, যা মনিটরের কোডের পক্ষে পোলের মধ্যে কোনও সুইচ বদলেছে কিনা তা পরীক্ষা করা সম্ভব করে - যদি না - তাদের মধ্যে কী কোডটি আগ্রহী তা নিয়ে উদ্বেগ প্রকাশ করুন।

যদি এমন অনেকগুলি সাবসিস্টেম থাকে যা কিছু পরিবর্তন করার সময় নোটিফিকেশন চায়, একটি ডেডিকেটেড মনিটরিং সাবসিস্টেম থাকার পরে অন্যান্য সাবসিস্টেমগুলিকে অবহিত করা হয় যখন ইভেন্টগুলি দেখা দেয় যে তারা আগ্রহী তারা প্রতিটি সাবসিস্টেমের নিজস্ব ইভেন্টগুলি পোল করার চেয়ে বেশি দক্ষ হতে পারে। যে কোনও ক্ষেত্রে কোনও ইভেন্টে আগ্রহী নয় এমন ক্ষেত্রে ডেডিকেটেড মনিটরিং সাবসিস্টেম স্থাপন করা নিখুঁত সম্পদের অপচয় হিসাবে প্রতিনিধিত্ব করবে। যদি ইভেন্টগুলিতে আগ্রহী এমন কয়েকটি কয়েকটি সিস্টেম থাকে, তবে তারা যে ইভেন্টগুলিতে আগ্রহী তাদের জন্য নজর রাখার ব্যয়টি সাধারণ-উদ্দেশ্যে ডেডিকেটেড মনিটরিং সাবসিস্টেম স্থাপনের ব্যয়ের চেয়ে কম হতে পারে, তবে বিরতি এমনকি বিভিন্ন প্ল্যাটফর্মের মধ্যে পয়েন্টটি উল্লেখযোগ্যভাবে পরিবর্তিত হবে।


0

একটি ইভেন্ট শ্রোতা একটি বার্তার জন্য অপেক্ষা করছিল কানের মতো। ইভেন্টটি ঘটে গেলে ইভেন্ট শ্রোতা হিসাবে নির্বাচিত সাবরুটাইন ইভেন্ট আর্গুমেন্টগুলি ব্যবহার করে কাজ করে।

দুটি গুরুত্বপূর্ণ ডেটা সর্বদা থাকে: ঘটনাটি ঘটে সেই মুহুর্ত এবং এই ইভেন্টটি ঘটে এমন বস্তু। অন্যান্য যুক্তি হ'ল যা ঘটেছে সে সম্পর্কে আরও ডেটা।

ইভেন্ট শ্রোতা তাতে ঘটে যাওয়া প্রতিক্রিয়া নির্দিষ্ট করে।


0

ইভেন্ট শ্রোতা প্রকাশ / সাবস্ক্রাইব প্যাটার্ন অনুসরণ করে (গ্রাহক হিসাবে)

এর সর্বাধিক আকারে, একটি প্রকাশনা অবজেক্ট গ্রাহকগণের নির্দেশাবলীর একটি তালিকা বজায় রাখে যখন কিছু প্রকাশ করা দরকার।

এটিতে এক ধরণের subscribe(x)পদ্ধতি থাকবে, যেখানে ইভেন্ট হ্যান্ডলারটি ইভেন্টটি পরিচালনা করার জন্য কীভাবে ডিজাইন করা হয়েছে তার উপর এক্স নির্ভর করে। সাবস্ক্রাইব (এক্স) ডাকা হলে, গ্রাহকদের নির্দেশাবলী / রেফারেন্সগুলির প্রকাশকদের তালিকায় এক্স যুক্ত করা হয়।

প্রকাশক ইভেন্টটি পরিচালনা করার জন্য সমস্ত কিছু যুক্তিযুক্ত বা কিছু হতে পারে। ইভেন্টটি ঘটে যখন এটি নির্দিষ্ট করে যুক্তি দিয়ে তাদের অবহিত করা / রূপান্তর করার জন্য কেবল গ্রাহকদের রেফারেন্সের প্রয়োজন হতে পারে। এটিতে কোনও যুক্তি থাকতে পারে এবং গ্রাহক অবজেক্টের (পদ্ধতি / ইভেন্ট শ্রোতার) প্রয়োজন হতে পারে যা ইভেন্টটি পরিচালনা করতে পারে। এতে উভয়ের মিশ্রণ রয়েছে।

যখন কোনও ইভেন্ট ঘটে তখন প্রকাশক পুনরাবৃত্তি করবে এবং গ্রাহকদের নির্দেশাবলী / রেফারেন্সগুলির তালিকায় প্রতিটি আইটেমের জন্য তার যুক্তি সম্পাদন করবে।

কোনও ইভেন্ট হ্যান্ডলার যত জটিল দেখায় না কেন, এর মূল দিকে এটি এই সাধারণ প্যাটার্নটি অনুসরণ করে।

উদাহরণ

ইভেন্ট শ্রোতার উদাহরণের জন্য, আপনি ইভেন্ট হ্যান্ডলারের সাবস্ক্রাইব () পদ্ধতিতে একটি পদ্ধতি / ফাংশন / নির্দেশনা / ইভেন্ট শ্রোতার সরবরাহ করেন। ইভেন্ট হ্যান্ডলার তার গ্রাহক কলব্যাকগুলির তালিকায় পদ্ধতিটি যুক্ত করে। যখন কোনও ইভেন্ট ঘটে, ইভেন্ট হ্যান্ডলারটি তার তালিকার উপরে পুনরাবৃত্তি করে এবং প্রতিটি কলব্যাক কার্যকর করে।

বাস্তব বিশ্বের উদাহরণের জন্য, আপনি যখন স্ট্যাক এক্সচেঞ্জের নিউজলেটারে সাবস্ক্রাইব করেন তখন আপনার প্রোফাইলের একটি উল্লেখ গ্রাহকদের একটি ডাটাবেস সারণিতে যুক্ত করা হবে। নিউজলেটার প্রকাশের সময় হওয়ার পরে, রেফারেন্সটি নিউজলেটারের টেম্পলেটটি তৈরি করতে ব্যবহৃত হবে এবং এটি আপনার ইমেলটিতে প্রেরণ করা হবে। এই ক্ষেত্রে, এক্স কেবল আপনার কাছে একটি রেফারেন্স এবং প্রকাশকের কাছে সমস্ত গ্রাহকদের জন্য অভ্যন্তরীণ নির্দেশাবলীর একটি সেট ব্যবহৃত হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.