সেটআইমিডিয়েট বনাম পরের টিক


336

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

এমডিএন যা বলে তা থেকে এটির সাথে খুব মিল রয়েছে process.nextTick

আমার কখন ব্যবহার করা উচিত nextTickএবং কখন ব্যবহার করা উচিত setImmediate?


20
এই পরিবর্তন সম্পর্কে 5 টি অনুচ্ছেদ রয়েছে ব্লগ.নোডজেএস.আর
ম্যাক

1
পারফরম্যান্সের মানদণ্ড থেকে এটি দেখতে বড় গণনার nextTickচেয়ে দ্রুত setImmediateon

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

আমি আমার ব্লগে দুর্দান্তভাবে পার্থক্যটি ব্যাখ্যা করেছি ।
প্লাফার

জিসি আগে চালাতে পারে এমন কি অবস্থা setImmediate, তবে আগে নয় nextTick?

উত্তর:


510

setImmediateযদি আপনি ইতিমধ্যে ইভেন্টের সারিতে থাকা I / O ইভেন্ট কলব্যাকগুলির পিছনে ফাংশনটি সারি করতে চান তবে ব্যবহার করুন । process.nextTickইভেন্টের সারির মাথায় ফাংশনটি কার্যকরভাবে সারি করার জন্য ব্যবহার করুন যাতে এটি বর্তমান ফাংশনটি সম্পূর্ণ হওয়ার সাথে সাথেই সম্পাদন করে।

সুতরাং আপনি যখন পুনরাবৃত্তি ব্যবহার করে দীর্ঘ দৌড়ে, সিপিইউ-বাউন্ড জব ভাঙার চেষ্টা করছেন, আপনি এখন পরবর্তী পুনরাবৃত্তির সারি setImmediateতৈরির পরিবর্তে ব্যবহার করতে চাইবেন process.nextTickঅন্যথায় কোনও আই / ও ইভেন্ট কলব্যাক সুযোগ পাবে না পুনরাবৃত্তি মধ্যে চালানো।


86
কলব্যাকগুলি প্রসেসের কাছে উত্তীর্ণ হয়েছে xtেক্সটিকটিকে সাধারণত সম্পাদনের বর্তমান প্রবাহের শেষে ডাকা হবে এবং এটি প্রায়শই তত দ্রুত গতিতে কোনও ক্রিয়াকলাপকে কল করার মতো। চেক না করা অবস্থায়, এটি ইভেন্ট লুপ অনাহারে যাবে, যে কোনও আই / ও ঘটতে বাধা দেয় from সেটআইমিডিয়েটগুলি তৈরি করা ক্রমে সারিযুক্ত হয় এবং প্রতি লুপ পুনরাবৃত্তির জন্য একবার সারি থেকে পপ করা হয়। এটি প্রক্রিয়া.নেক্সটটিক থেকে পৃথক যা প্রবর্তন প্রতি প্রসেস.ম্যাক্সটিকডেপথ সারিবদ্ধ কলব্যাকগুলি সম্পাদন করবে। I / O অনাহারে না পড়েছে তা নিশ্চিত করার জন্য একটি সারিবদ্ধ কলব্যাক ফায়ার করে সেটআইমিডিয়েট ইভেন্ট লুপটিতে উপস্থিত হবে।
বেনিয়ামিন গ্রুইনবাউম

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

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

4
@ ফ্যাবস্প্রো কিন্তু দুর্ভাগ্যক্রমে ফাংশনটিকে নেক্সটটিক বলা হয়। NextTick "তাত্ক্ষণিকভাবে" কার্যকর করে যখন সেটআইমিডিয়েটটি সেটটাইমআউট / পোস্টমেসেজের মতো।
রবার্ট

1
@ ক্রেইগএন্ড্রুজ আমি এড়িয়ে যাব requestAnimationFrameকারণ এটি সর্বদা ঘটে না (আমি অবশ্যই এটি দেখেছি, আমি মনে করি উদাহরণটি ট্যাবটি বর্তমান ট্যাব ছিল না) এবং পৃষ্ঠাটি পেইন্টিং শেষ হওয়ার আগেই এটি কল হতে পারে (যেমন ব্রাউজারটি এখনও অঙ্কন ব্যস্ত)।
রোবোট

68

একটি নিদর্শন হিসাবে

import fs from 'fs';
import http from 'http';

const options = {
  host: 'www.stackoverflow.com',
  port: 80,
  path: '/index.html'
};

describe('deferredExecution', () => {
  it('deferredExecution', (done) => {
    console.log('Start');
    setTimeout(() => console.log('TO1'), 0);
    setImmediate(() => console.log('IM1'));
    process.nextTick(() => console.log('NT1'));
    setImmediate(() => console.log('IM2'));
    process.nextTick(() => console.log('NT2'));
    http.get(options, () => console.log('IO1'));
    fs.readdir(process.cwd(), () => console.log('IO2'));
    setImmediate(() => console.log('IM3'));
    process.nextTick(() => console.log('NT3'));
    setImmediate(() => console.log('IM4'));
    fs.readdir(process.cwd(), () => console.log('IO3'));
    console.log('Done');
    setTimeout(done, 1500);
  });
});

নিম্নলিখিত আউটপুট দেবে

Start
Done
NT1
NT2
NT3
TO1
IO2
IO3
IM1
IM2
IM3
IM4
IO1

আমি আশা করি এটি পার্থক্য বুঝতে সাহায্য করতে পারে।

আপডেট করা হয়েছে:

সঙ্গে ডেফার্ড Callbacks process.nextTick()অন্য কোন ইনপুট / আউটপুট ইভেন্টের আগে রান বহিস্কার করা হয়, যখন setImmediate সঙ্গে (), ফাঁসি কোনো ইনপুট / আউটপুট ঘটনা সারিতে যে ইতিমধ্যে পিছনে সারিবদ্ধ হয়।

মারিও ক্যাসিয়ারো দ্বারা নোড.জেএস ডিজাইন প্যাটার্নস (সম্ভবত নোড.জেএস / জেএস সম্পর্কে সেরা বই)


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

1
আমি মনে করি যে সেটটাইমআউট () এবং সেটআইমিডিয়েট () সেট করা গুরুত্বপূর্ণ, যখন কোনও আই / ও চক্রের মধ্যে না হয় কোনও প্রক্রিয়াটির পারফরম্যান্সের উপর নির্ভর করে অর্ডারটি অ-নির্বিচারক হয়। nodejs.org/en/docs/guides/event-loop-timers- and-nexttick For example, if we run the following script which is not within an I/O cycle (i.e. the main module), the order in which the two timers are executed is non-deterministic, as it is bound by the performance of the process: সুতরাং, এই উত্তরটি সঠিক পার্থক্যটির উত্তর দেয় না তবে কেবল একটি উদাহরণ যা বিভিন্ন প্রসঙ্গে পরিবর্তিত হতে পারে
অ্যাক্টং

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

50

আমি মনে করি আমি এটি বেশ সুন্দরভাবে বর্ণনা করতে পারি। যেহেতু nextTickবর্তমান অপারেশনের শেষে বলা হয়ে থাকে, এটিকে পুনরাবৃত্তি বলে কল করা ঘটনা লুপটিকে অবিরত করা অবরুদ্ধ করে। setImmediateইভেন্ট লুপটির চেক পর্বে গুলি চালিয়ে এটিকে সমাধান করে, ইভেন্ট লুপটি স্বাভাবিকভাবে চালিয়ে যেতে দেয়।

   ┌───────────────────────┐
┌─>│        timers         
  └──────────┬────────────┘
  ┌──────────┴────────────┐
       I/O callbacks     
  └──────────┬────────────┘
  ┌──────────┴────────────┐
       idle, prepare     
  └──────────┬────────────┘      ┌───────────────┐
  ┌──────────┴────────────┐         incoming:   
           poll          │<─────┤  connections, 
  └──────────┬────────────┘         data, etc.  
  ┌──────────┴────────────┐      └───────────────┘
          check          
  └──────────┬────────────┘
  ┌──────────┴────────────┐
└──┤    close callbacks    
   └───────────────────────┘

উত্স: https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/

লক্ষ করুন যে চেক পর্বটি ভোটগ্রহণের পর্বের অব্যবহিত পরে। এটি কারণ আপনার ভোটদানগুলি setImmediateচালিত হতে চলেছে পোলের পর্ব এবং I / O কলব্যাকগুলি সম্ভবত places সুতরাং আদর্শভাবে those কলগুলির বেশিরভাগই প্রকৃতপক্ষে তাত্ক্ষণিকভাবে হবে, ঠিক ততটা তাত্ক্ষণিক নয় nextTickযা প্রতিটি ক্রিয়াকলাপের পরে পরীক্ষা করা হয় এবং ইভেন্ট লুপের বাইরে প্রযুক্তিগতভাবে উপস্থিত থাকে।

এর মধ্যে পার্থক্য সামান্য উদাহরণ কটাক্ষপাত করা যাক setImmediateএবং process.nextTick:

function step(iteration) {
  if (iteration === 10) return;
  setImmediate(() => {
    console.log(`setImmediate iteration: ${iteration}`);
    step(iteration + 1); // Recursive call from setImmediate handler.
  });
  process.nextTick(() => {
    console.log(`nextTick iteration: ${iteration}`);
  });
}
step(0);

ধরা যাক আমরা কেবল এই প্রোগ্রামটি চালিয়েছি এবং ইভেন্ট লুপের প্রথম পুনরাবৃত্তির মধ্য দিয়ে যাচ্ছি। এটি stepপুনরাবৃত্তি শূন্যের সাথে ফাংশনে কল করবে । এরপরে এটি দুটি হ্যান্ডলারের নিবন্ধভুক্ত করবে, একজনের জন্য setImmediateএবং একজনের জন্য process.nextTick। তারপরে আমরা setImmediateহ্যান্ডলার থেকে পুনরাবৃত্তভাবে এই ফাংশনটি কল করি যা পরবর্তী চেক পর্বে চলবে। nextTickহ্যান্ডলার বর্তমান অপারেশন ঘটনা লুপ বিঘ্নিত শেষে চালানো হবে, তাই যদিও এটি দ্বিতীয় নিবন্ধিত ছিল এটা আসলে প্রথম চালানো হবে।

nextTickক্রমটি শেষ হয়ে যায়: বর্তমান অপারেশন শেষ হওয়ার সাথে সাথে আগুন জ্বলতে থাকে, পরবর্তী ইভেন্টের লুপটি শুরু হয়, সাধারণ ইভেন্টের লুপ পর্যায়ক্রমে কার্যকর হয়, setImmediateআগুন জ্বলতে থাকে এবং পুনরায় stepক্রিয়াটি পুনরায় প্রক্রিয়া শুরু করার জন্য আমাদের ফাংশনটি কল করে। বর্তমান অপারেশন শেষ, nextTickআগুন ইত্যাদি

উপরের কোডটির আউটপুট হবে:

nextTick iteration: 0
setImmediate iteration: 0
nextTick iteration: 1
setImmediate iteration: 1
nextTick iteration: 2
setImmediate iteration: 2
nextTick iteration: 3
setImmediate iteration: 3
nextTick iteration: 4
setImmediate iteration: 4
nextTick iteration: 5
setImmediate iteration: 5
nextTick iteration: 6
setImmediate iteration: 6
nextTick iteration: 7
setImmediate iteration: 7
nextTick iteration: 8
setImmediate iteration: 8
nextTick iteration: 9
setImmediate iteration: 9

এখন আসুন এর পরিবর্তে আমাদের পুনরাবৃত্ত কলকে stepআমাদের nextTickহ্যান্ডলারের দিকে সরানো যাক setImmediate

function step(iteration) {
  if (iteration === 10) return;
  setImmediate(() => {
    console.log(`setImmediate iteration: ${iteration}`);
  });
  process.nextTick(() => {
    console.log(`nextTick iteration: ${iteration}`);
    step(iteration + 1); // Recursive call from nextTick handler.
  });
}
step(0);

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

উপরের কোডটির আউটপুটটি শেষ হচ্ছে:

nextTick iteration: 0
nextTick iteration: 1
nextTick iteration: 2
nextTick iteration: 3
nextTick iteration: 4
nextTick iteration: 5
nextTick iteration: 6
nextTick iteration: 7
nextTick iteration: 8
nextTick iteration: 9
setImmediate iteration: 0
setImmediate iteration: 1
setImmediate iteration: 2
setImmediate iteration: 3
setImmediate iteration: 4
setImmediate iteration: 5
setImmediate iteration: 6
setImmediate iteration: 7
setImmediate iteration: 8
setImmediate iteration: 9

নোট করুন যে আমরা যদি পুনরাবৃত্ত কলটিতে বাধা সৃষ্টি না করে এবং 10 টি পুনরাবৃত্তির পরে এটি বাতিল করে দিয়েছিলাম তবে nextTickকলগুলি পুনরাবৃত্তি হতে থাকবে এবং ইভেন্ট লুপটিকে পরবর্তী পর্যায়ে অব্যাহত রাখতে দেয় না। এভাবেই nextTickযখন পুনরাবৃত্তভাবে ব্যবহার করা হয় তখন ব্লক হয়ে যেতে পারে যেখানে setImmediateপরবর্তী ইভেন্টের লুপে আগুন লাগবে এবং setImmediateএকের মধ্যে থেকে অন্য হ্যান্ডলারটি সেট করা বর্তমান ইভেন্ট লুপকে মোটেই বাধাগ্রস্ত করবে না, ইভেন্ট লুপের স্বাভাবিক পর্যায়ক্রমে পর্যায়ক্রমে চালিয়ে যাওয়ার অনুমতি দেয়।

আশা করি এইটি কাজ করবে!

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


2
খুব পরিষ্কার বর্ণনা। আমি মনে করি এই উত্তরটির আরও বেশি উদ্যোগ প্রয়োজন।
অ্যাক্টং

সুস্পষ্টভাবে ব্যাখ্যা (Y)
ধীরাজ শর্মা

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

1
ধন্যবাদ, এটি সেরা ব্যাখ্যা ছিল। নমুনা কোড সত্যিই সাহায্য করেছে।
স্কাইভোক

@ স্কিহ্যাভোক খুশী আমি সাহায্য করতে পারলাম!
শেভ

30

উত্তরের মন্তব্যে এটি স্পষ্টভাবে জানায় না যে নেক্সটটিক ম্যাক্রোস্যামেন্টিক্স থেকে মাইক্রোস্যামেন্টিক্সে স্থানান্তরিত হয়েছে।

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

নোড ০.৯ থেকে, নেক্সটটিক বিদ্যমান কলস্ট্যাকের শেষে কাজ করে, যেখানে সেটআইমিডিয়েট পরবর্তী কলস্ট্যাকের শুরুতে রয়েছে

সরঞ্জাম এবং বিশদ জন্য https://github.com/YuzuJS/setImimar দেখুন check


11

সাধারণ কথায়, প্রসেস.নেক্সটিক () ইভেন্ট লুপের পরবর্তী টিকে কার্যকর করা হবে। তবে সেটইমিডিয়েটটি মূলত একটি পৃথক পর্যায় রয়েছে যা নিশ্চিত করে যে সেটআইমিডিয়েট () এর আওতায় নিবন্ধিত কলব্যাক কেবল আইও কলব্যাক এবং ভোটগ্রহণের পর্যায়ে পরে কল করা হবে।

সুন্দর ব্যাখ্যার জন্য দয়া করে এই লিঙ্কটি দেখুন: https://medium.com/the-node-js-collection/ কি-you-should- ज्ञान-to-really-:30:30- node- js-event-loop- and -its-মেট্রিক্স-c4907b19da4c

সরলীকরণ ইভেন্ট লুপ ইভেন্ট


8

তারা দু'জন কীভাবে কাজ করে তা বিশদে কিছু দুর্দান্ত উত্তর।

কেবলমাত্র একটি যুক্ত করা যা জিজ্ঞাসা করা নির্দিষ্ট প্রশ্নের উত্তর দেয়:

আমার কখন ব্যবহার করা উচিত nextTickএবং কখন ব্যবহার করা উচিত setImmediate?


সর্বদা ব্যবহার setImmediate


Node.js ইভেন্ট লুপ, টাইমার, এবংprocess.nextTick() ডক নিম্নলিখিত রয়েছে:

আমরা বিকাশকারীদের setImmediate()সকল ক্ষেত্রে ব্যবহার করার পরামর্শ দিই কারণ এটি সম্পর্কে তর্ক করা আরও সহজ (এবং এটি এমন কোডের দিকে নিয়ে যায় যা ব্রাউজার জেএস এর মতো বিস্তৃত পরিবেশের সাথে সামঞ্জস্যপূর্ণ))


ডক এর আগে এটি সতর্ক করে যা এর process.nextTickফলে ...

কিছু খারাপ পরিস্থিতি কারণ এটি আপনাকে পুনরাবৃত্ত process.nextTick()কল করে আপনার আই / ওকে "অনাহার" করতে দেয়, যা ইভেন্টের লুপটিকে পোলের পর্যায়ে পৌঁছাতে বাধা দেয় ।

এটি দেখা যাচ্ছে, process.nextTickএমনকি অনাহারও করতে পারে Promises:

Promise.resolve().then(() => { console.log('this happens LAST'); });

process.nextTick(() => {
  console.log('all of these...');
  process.nextTick(() => {
    console.log('...happen before...');
    process.nextTick(() => {
      console.log('...the Promise ever...');
      process.nextTick(() => {
        console.log('...has a chance to resolve');
      })
    })
  })
})

অন্যদিকে, setImmediate" বিতর্ক করা সহজ " এবং এই ধরণের সমস্যাগুলি এড়ানো হয়:

Promise.resolve().then(() => { console.log('this happens FIRST'); });

setImmediate(() => {
  console.log('this happens LAST');
})

সুতরাং অনন্য আচরণের জন্য নির্দিষ্ট প্রয়োজন না process.nextTickহলে প্রস্তাবিত পদ্ধতির নাম " সমস্ত ক্ষেত্রে ব্যবহার setImmediate()করা "।


1

আমি আপনাকে আরও ভাল বোঝার জন্য লুপের জন্য নিবেদিত ডক্স বিভাগটি পরীক্ষা করার পরামর্শ দিচ্ছি । সেখান থেকে নেওয়া কিছু স্নিপেট:

আমাদের কাছে দুটি কল রয়েছে যা ব্যবহারকারীরা যতটা উদাসীন, তেমনই তাদের নাম কিন্তু বিভ্রান্তিকর।

  • প্রসেস.নেক্সটিক () একই ধাপে তত্ক্ষণাত আগুন দেয়

  • সেটআইমিডিয়েট () নীচের পুনরাবৃত্তিতে বা
    ইভেন্ট লুপটির 'টিক' জ্বলিয়ে দেয়

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

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