আমাদের "কলব্যাক ফাংশন" কেন দরকার?


16

আমি বইটি পড়ছি programming in Lua। এটা বলেছে

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

function digitButton (digit)
  return Button{label = tostring(digit),
                action = function ()
                  add_to_display(digit)
                  end}
end

মনে হচ্ছে যে আমি যদি কল digitButton, এটা ফিরে আসবে action(এটি অবসান তৈরি করবে), তাই আমি অ্যাক্সেস করতে পারেন digitপ্রেরণdigitButton

আমার প্রশ্নটি হ'ল:

Why we need call back functions? what situations can I apply this to?


লেখক বলেছেন:

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

লেখকের মতে, আমি মনে করি একটি অনুরূপ উদাহরণ এটির মতো:

function Button(t)
  -- maybe you should set the button here
  return t.action -- so that you can call this later
end

function add_to_display(digit)
  print ("Display the button label: " .. tostring(digit))
end

function digitButton(digit)
  return Button{label = tostring(digit),
                action = function ()
                           add_to_display(digit)
                           end}
end

click_action = digitButton(10)
click_action()

এভাবে the callback can be called a long time after digitButton did its task and after the local variable digit went out of scope.


উত্তর:


45

গাই 1 থেকে গাই 2: আরে বন্ধু আমি যখন কিছু করতে চাই তখন কোনও ব্যবহারকারী সেখানে ক্লিক করেন, ঠিকঠাক ঘটলে আমাকে আবার ফোন করুন?

কোনও ব্যবহারকারী এখানে ক্লিক করলে গাই 2 গাই 1 কে আবার কল করে।


1
আমি এই কল-ব্যাক কৌতুকটি খুব পছন্দ করি :
লুকাস লি

6
এটা শুধু আমার? আমাদের কলব্যাক ফাংশন কেন প্রয়োজন তা এটি কীভাবে ব্যাখ্যা করে তা আমি পাই না।
ফ্যান্ট0 মি

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

এটি একটি ভয়াবহ ব্যাখ্যা।
insidesin

21

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


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

2
টিম, আপনি ঠিক বলেছেন - তবে জানুয়ারও তাই "" ব্যবহারকারী এটির সাথে সাথে ক্লিক করলে বোতামটি এটি কার্যকর করা হবে ", তাত্ক্ষণিকভাবে নয়।
আলেকজান্ডারব্রেভিগ

@ আলেকজান্ডারব্রেভিগ হ্যাঁ, আমি এখনও আমার মনে হয় জানের জবাব আমার পক্ষে খুব কার্যকর। এটি আমাকে ফিরে কল কী এবং কেন আমাদের ফিরে কল দরকার তা জানতে দেয়।
লুকাস লি

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

16

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

এজেএক্স কলটি অ্যাসিঙ্ক্রোনাস, এর অর্থ যদি আপনি এই জাতীয় কিছু করেন:

var ajax = ajaxCall();
if(ajax == true) {
  // Do something
}

ifব্লকের বিষয়বস্তু নির্ভরযোগ্যভাবে সঠিকভাবে চলবে না, এবং যখন এটি হয় তখনই এটি কার্যকর হয় কারণ ajaxCall()কার্য সম্পাদনটি পৌঁছানোর আগেই ফাংশনটি শেষ হয়েছিলif বিবৃতিতে

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

function ajaxCallback(response) {   
  if(response == true) {
    // Do something   
  }
}

ajaxCall(ajaxCallback);

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

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


12

আপনি প্রশ্ন জিজ্ঞাসা করেছেন

আমাদের "কল ব্যাক ফাংশন" কেন দরকার?

আমি একটি সংক্ষিপ্ত এবং পরিষ্কার পদ্ধতিতে এর উত্তর দেওয়ার চেষ্টা করব (যদি আমি এটিতে ব্যর্থ হই তবে দয়া করে এই উত্তরের নীচে উইকির লিঙ্কটি দেখুন)।

কলব্যাকগুলি কোনও শেষের সম্ভাব্য মুহুর্তের নির্দিষ্ট প্রয়োগ বাস্তবায়নের পিছনে ব্যবহৃত হয়।

বোতাম উদাহরণ এটির একটি ভাল চিত্র। বলুন যে আপনি আপনার অ্যাপ্লিকেশনটিতে একটি বোতাম রাখতে চান যা মুদ্রকটিতে একটি পৃষ্ঠা মুদ্রণ করে, আমরা এমন একটি বিশ্ব কল্পনা করতে পারি যেখানে PrinterButtonএটি করার জন্য আপনাকে একটি সম্পূর্ণ নতুন শ্রেণি কোড করতে হবে।

ভাগ্যক্রমে, আমাদের কলব্যাকের ধারণা আছে (উত্তরাধিকার এবং টেমপ্লেট প্যাটার্নের ব্যবহারটিও এক ধরণের কলব্যাক সিমানেটিক) তাই আমাদের এটি করার দরকার নেই।

একটি বোতামের প্রতিটি দিক পুনরায় প্রয়োগের পরিবর্তে, আমরা যা করি তা হ'ল বোতামটির বাস্তবায়নে যুক্ত করা। Buttonএরকম ধারণা হয়েছে কিছু যখন এটি চাপা হচ্ছে। আমরা কেবল এটিই বলি যে এটি কী।

ফ্রেমওয়ার্কগুলিতে আচরণের ইনজেকশনের সেই প্রক্রিয়াটিকে কলব্যাক্স বলা হয়।

উদাহরণ:

এইচটিএমএল বোতামে কিছু আচরণ ইনজেক্ট করুন:

<button onclick="print()">Print page through a callback to the print() method</button>

এই উদাহরণে, onclickএকটি কলব্যাকের দিকে নির্দেশ করে, যা এই উদাহরণের জন্য print()পদ্ধতি।


http://en.wikipedia.org/wiki/Callback_(computer_programming)


ধন্যবাদ, আপনার দৃষ্টান্তটি পড়ার পরে, আমি উইকি পড়তে যাই যার উদাহরণগুলি কেবল সিঙ্ক্রোনাস কলব্যাক।
লুকাস লি

কোনও ফাংশনটির প্রতিবারই সমস্যা বলার উত্তরটি বলুন এবং আপনাকে সমস্যার জন্য শুনতে হবে; এটি নিজের যত্ন নেয় এমন সমস্যা সমাধানের জন্য একটি ফাংশন শেখান।
জো

8

আমাদের কল ব্যাক ফাংশনগুলির প্রয়োজন কেন? কোন পরিস্থিতিতে আমি এটি প্রয়োগ করতে পারি?

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


1
+ কলব্যাকগুলি এটাই ভাল, তবে আমি সেগুলি লিখতে পছন্দ করি না :-)
মাইক ডুনলাভে

যখন আমি কেবল নবীন ছিলাম, আমার শিক্ষক এমএফসি-তে কীভাবে প্রোগ্রাম করবেন তা শিখিয়েছিলেন, কিন্তু কলব্যাক কী তা তিনি কখনই আমাদের বলেননি :-(
লূকাস লি

2

কলব্যাক ব্যতীত কী ঘটে:

লোক 1: ঠিক আছে, আমি এই জিনিসটি হওয়ার জন্য অপেক্ষা করছি। (হুইসেলস, টুইডল থাম্বস)

গাই 2: দাম্মিট! গাই 1 আমাকে স্টাফ দেখাচ্ছে না কেন? আমি জিনিস দেখতে দেখতে চাই !! আমার জিনিসপত্র কই? এখানে কেউ কীভাবে কিছু করার কথা রয়েছে?


1

ফার্স্টফ, কলব্যাক শব্দটি এমন একটি ক্লোজারকে বোঝায় যা কোনও কিছুর জন্য ব্যবহৃত হচ্ছে।

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

তবে, ধরুন আপনি কোনও ক্লোজার তৈরি করেছেন এবং এটিকে কোথাও সংরক্ষণ করেছেন যে যখন কিছু ঘটে তখন ডাকবে। একে এখন কলব্যাক বলা হয়।

সাধারণত, কলব্যাকগুলি প্রোগ্রামগুলির বিভিন্ন অংশগুলির দ্বারা কল করা অংশগুলির চেয়ে তৈরি হয়। সুতরাং এটি সহজেই ধারণা করা যায় যে প্রোগ্রামের কিছু অংশ অন্য অংশগুলিকে "কলিং" করছে।

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

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


হ্যাঁ, Extending the lifetime of local variablesশব্দটি বলতেও হয় upvalue
লুকাস লি

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

1

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

subroutine rungekutta(neq, t, tend, y, deriv)
  integer neq             ! number of differential equations
  double precision t      ! initial time
  double precision tend   ! final time
  double precision y(neq) ! state vector
  ! deriv is the callback function to evaluate the state derivative
  ...
  deriv(neq, t, y, yprime) ! call deriv to get the state derivative
  ...
  deriv(neq, t, y, yprime) ! call it several times
  ...
end subroutine

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


1

এতে হোঁচট খেয়েছে এবং আরও নতুন করে উত্তর প্রদান করতে চেয়েছিল ...

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

doSomething().then(function(result) {
  return doSomethingElse(result);
})
.then(function(newResult) {
  return doThirdThing(newResult);
})
.then(function(finalResult) {
  console.log('Got the final result: ' + finalResult);
})
.catch(failureCallback);

কোড ... থেকে নেওয়া হয় https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises

আশা করি, এটি কাউকে সহায়তা করে। এটিই আমাকে কলব্যাকগুলি বুঝতে সহায়তা করেছে :)


1
এই অফারটি কোন কিছুরই সৃষ্টি পয়েন্ট উপর সারগর্ভ বলে মনে হচ্ছে না এবং পূর্বে 9 উত্তর ব্যাখ্যা
মশা

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

-2

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

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


হ্যাঁ, আপনি যা বলেছেন তা বইটি পড়ার পরে আমার বোঝার সাথে সামঞ্জস্যপূর্ণ।
লুকাস লি

2
কলব্যাক পদ্ধতিগুলি মাল্টিথ্রেডিংয়ের মতো কিছুই নয়। কলব্যাক পদ্ধতিগুলি হ'ল ফাংশন পয়েন্টার (প্রতিনিধি)। থ্রেডগুলি সিপিইউ প্রসঙ্গে স্যুইচিং / ব্যবহার সম্পর্কে ization একটি অতি সরলিকৃত বৈসাদৃশ্যটি হ'ল থ্রেডিংটি ইউএক্সের সিপিইউ অপ্টিমাইজেশন সম্পর্কে যেখানে কলব্যাকগুলি পলিমারফিজমের জন্য মেমরি স্যুইচিং সম্পর্কে। থ্রেডিং কলব্যাকগুলি কার্যকর করতে পারে বলে কেবল থ্রেডিং এবং কলব্যাকগুলি একই রকম similar থ্রেড স্ট্যাটিক ক্লাসে স্থির পদ্ধতিগুলিও চালায় তবে থ্রেডিং এবং স্ট্যাটিক ধরণের অনুরূপ নয়।
rism
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.