অ্যাসিনক্রোনাস বনাম সিঙ্ক্রোনাস [বন্ধ] এর অর্থ


46

কম্পিউটার বিজ্ঞানে অ্যাসিনক্রোনাস এবং সিঙ্ক্রোনাস শব্দের অর্থ কী ?

আপনি যদি শব্দগুলির অর্থ গুগল করেন তবে আপনি নিম্নলিখিত পাবেন:

তবে মনে হয় প্রোগ্রামিং বা কম্পিউটার বিজ্ঞানের বিপরীত অর্থটি প্রকাশ করতে এগুলি ব্যবহার করা হয়:

এইচটিএমএল অ্যাসিঙ্ক বৈশিষ্ট্যটির অর্থ হ'ল এইচটিএমএল এখনও বিশ্লেষণ বা ডাউনলোড করা হচ্ছে, এমনকি স্ক্রিপ্ট এবং এইচটিএমএল উভয়ই উপস্থিত রয়েছে এবং একই সময়ে আমার কাছে উপস্থিত হয়, এমনকি স্ক্রিপ্টটি ডাউনলোড করার সাথে সাথেই এটি কার্যকর করা হবে।

এই পদগুলি কম্পিউটার বিজ্ঞানের বিপরীত অর্থ বোঝাতে ব্যবহৃত হয় বা আমি কী বিন্দুটি অনুভব করছি?


47
আমি এটি বলা সহজ বলে মনে করি: কোডটি কীভাবে কাজ করে তা যদি আমি বুঝতে না পারি এবং আমি যখন তাদের অনুসন্ধান করছি তখন হঠাৎ অদৃশ্য হয়ে যায়, কোডটি সম্ভবত অবিচ্ছিন্ন। :)
এরিক ডুমিনিল

4
দুঃখজনক সত্যটি হল যে প্রোগ্রামিংয়ের ক্ষেত্রে, সময়ের সাথে সাথে এই শব্দগুলির অর্থ অন্যথায় যা বোঝায় তার বিপরীত বোঝায়। তাদের বর্তমান অর্থগুলির historicalতিহাসিক কারণ থাকতে পারে তবে এর কোনও ভাল ন্যায়সঙ্গততা নেই।
সলোমনফের সিক্রেট

3
কি হিসাবে একই সময়ে , কী :)
মনিকার সাথে লাইটনেস রেস

5
প্রকৃত অপারেশন না (অগত্যা) একই সময়ে ঘটতে হিসাবে ফাংশন অপারেশন বনাম বরকত হয় না একই সময় ফাংশন প্রার্থনা করা হয় এ ঘটতে ... আমাকে অনগ্রসর বলে মনে হচ্ছে না? যদি আমি কোনও ফাংশনটিকে অ্যাসিঙ্ক্রোনাস হিসাবে বর্ণনা করি তবে আমি যা বলছি তা যা বলছে তা একই সাথে ঘটানোর গ্যারান্টিযুক্ত নয় you
এফফি

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

উত্তর:


47

আমি আপনাকে একটি উত্তর দিতে চাই যা আপনার সাথে পাওয়া সংজ্ঞাগুলির সাথে সরাসরি সম্পর্কিত। যখন একটি কাজ টি 1 দ্বিতীয় টাস্ক টি 2 শুরু করে, এটি নিম্নলিখিত পদ্ধতিতে ঘটতে পারে:

সিঙ্ক্রোনাস: একই সময়ে বিদ্যমান বা সংঘটিত।

সুতরাং টি 2 টি টাইম স্লাইজের অভ্যন্তরে আরম্ভ এবং কার্যকর করার গ্যারান্টিযুক্ত । টি 1 টি 2 সমাপ্তির জন্য "অপেক্ষা করে" এবং পরে প্রক্রিয়া চালিয়ে যেতে পারে। এই অর্থে, টি 1 এবং টি 2 "একই সময়ে" ঘটে ("সমান্তরালভাবে নয়", তবে একটি নির্দিষ্ট সময়ের ব্যবধানে)।

অ্যাসিনক্রোনাস: একই সময়ে বিদ্যমান বা ঘটছে না।

সুতরাং টি 2 এর কার্যকর করার সময়টি এখন টি 1 এর সাথে সম্পর্কিত নয়। এটি সমান্তরালভাবে নির্বাহ করা হতে পারে, এটি এক সেকেন্ড, এক মিনিট বা বেশ কয়েক ঘন্টা পরে হতে পারে, এবং টি 2 টি টি শেষ হতে পারে তখন চলতে পারে (সুতরাং টি 2 এর ফলাফল প্রক্রিয়া করার জন্য, টি 3 এর জন্য একটি নতুন কার্য প্রয়োজন হতে পারে)। এই অর্থে, টি 1 এবং টি 2 "একই সময়ে ঘটছে (বিরতি)" নয়।

অবশ্যই, আমি সম্মত, আক্ষরিক সংজ্ঞাগুলি আজকাল প্রায়শই সমান্তরাল ফাঁসি তৈরির জন্য ব্যবহৃত হয় তা দেখে আক্ষরিক সংজ্ঞাগুলি অস্পষ্ট বলে মনে হয়।


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

6
না, আমি মনে করি না আমি করেছিলাম। সিঙ্ক্রোনারি এবং যুগপততা একই জিনিস নয়।
রবার্ট হার্ভে

1
আমি দৃ as়ভাবে বলতে চাই যে অভিধানের সংজ্ঞাগুলি সফ্টওয়্যার বিকাশকারীদের তেমন ব্যবহার হয় না। আমরা ব্যবহার করি এমন প্রযুক্তিগত পদগুলিতে অভিধানের সংজ্ঞা মানচিত্রের চেষ্টা করা সম্ভবত কার্যকর নয়।
রবার্ট হার্ভে

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

1
@ রবার্টহারভে অভিধানের সংজ্ঞাগুলি সঠিকভাবে কাজ করে যদি আপনি সঠিক দৃষ্টিকোণটি ব্যবহার করেন। মৃত্যুদণ্ড কার্যকর করার সময় আপনি সকলেই আবেশভূক্ত। নির্দেশাবলী কার্যকর করা হয় তার বাইরে একটি জীবনকাল থাকে। সিক্যুয়ালিয়াল নির্দেশাবলী একটি রিভলভারে বুলেটগুলি একইভাবে সিঙ্ক্রোনসিলে সরানো হয় nch একইভাবে নির্দেশাবলী নির্দেশ পাইপলাইনগুলির মাধ্যমে সিঙ্ক্রোনসিভভাবে স্থানান্তর করতে পারে। মৃত্যুদন্ড কার্যকর করার দৃষ্টিভঙ্গিতে অবসন্ন হওয়া বন্ধ করুন। সেগুলি কার্যকর করার আগে নির্দেশের সাথে প্রচুর বোকা হয়।
candied_orange

20

আমি দেখতে পাচ্ছি যে এটি বোঝার সর্বোত্তম উপায়টি নিম্নলিখিত:

  • সিঙ্ক্রোনাস: আমরা জানি কখন এটি ঘটবে (যখন এই অন্যান্য কোডটি শেষ হয় তখন এটি ঘটে)।
  • অ্যাসিনক্রোনাস: কখন হবে তা আমরা জানি না।

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


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

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

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


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

একটি অ্যাসিঙ্ক্রোনাস এপিআই আপনাকে অনুরোধকৃত ক্রিয়াকলাপটি সম্পূর্ণ না হওয়া সত্ত্বেও কার্যকরকরণ চালিয়ে যাওয়ার মঞ্জুরি দেয়, একটি সংক্রামিক এটি না করে। এবং সেখান থেকে আপনি ধারণাটি অ্যাসিঙ্ক্রোনাস পান - সফ্টওয়্যারে - মানে একই সময়ে ঘটছে (সমবর্তী)।

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

ওহ, যাইহোক, কিছু প্ল্যাটফর্মে সিস্টেম অ্যাসিক্রোনাস টাস্কটি ইনলাইন করার সিদ্ধান্ত নিতে পারে এবং এইভাবে এটি একটি সিঙ্ক্রোনাস অপারেশন হিসাবে চালিত করতে পারে (ধরে নিতে পারে এটি প্রতিটি কাজের পক্ষে কার্যকর নয়)।

আবার, অ্যাসিঙ্ক্রোনাসের অর্থ হ'ল কখন হবে তা আপনি জানেন না।


আপনি "সমবর্তী" এবং "সমান্তরাল" কার্যকরকরণের মধ্যে পার্থক্যের বিষয়েও আগ্রহী হতে পারেন ?


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

1
@ জিয়াকোমো আলজিটা আমার মনে হয় শব্দটি সিনক্রোনিজম। আমি এই জাতীয় শব্দগুলিও খুঁজে পেয়েছি: সিঙ্ক্রোনাইজেশন, সিঙ্ক্রোনাইজেশন এবং সিঙ্ক্রোনসিটি। সম্ভবত এটি নিজস্ব প্রশ্ন মূল্যবান।
থেরোট

12

অ্যাসিনক্রোনাস: একই সময়ে বিদ্যমান বা ঘটছে না।

সিঙ্ক্রোনাস: একই সময়ে বিদ্যমান বা সংঘটিত।

অ্যাসিঙ্ক বৈশিষ্ট্যটির অর্থ হ'ল এইচটিএমএল এখনও বিশ্লেষণ করে থাকলেও স্ক্রিপ্টটি ডাউনলোড করার সাথে সাথেই সম্পাদন করা হবে, যার অর্থ উভয় প্রক্রিয়া আমার কাছে একই সাথে বিদ্যমান।

এটা আসলে বিভ্রান্তিকর!

পরিবর্তে অর্থ বিবেচনা সিঙ্ক্রোনাইজ এবং unsynchronized । একটির সময় অন্যটির উপর নির্ভর করে দুটি জিনিস সিঙ্ক্রোনাইজ করা হয়, এবং সময়গুলির সাথে সম্পর্কযুক্ত না থাকলে আনসক্রোনাইজ করা হয়।

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

তবে এটি উপলব্ধি করা গুরুত্বপূর্ণ যে এখানে আসলে তিনটি সম্ভাবনা রয়েছে:

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

আপনি এটি বুঝতে পেরে গেলে জনপ্রিয় প্রোগ্রামিং ভাষাগুলিতে অ্যাসিঙ্ক ওয়ার্কফ্লোয়ের উদ্দেশ্য আরও স্পষ্ট হয়ে উঠেছে:

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

  • awaitC # এর মত ভাষায় অপারেটর অ্যাসিঙ্ক্রোনাস কর্মপ্রবাহ উপর ক্রম অপারেশন। প্রতীক্ষা হ'ল অবিচ্ছিন্ন অপেক্ষা ; এটা একটি বিন্দু যেখানে আমরা একটি অ্যাসিঙ্ক্রোনাস কর্মপ্রবাহ দুটি অংশ মধ্যে একটি ক্রম সম্পর্ক প্রকাশ এবং বলে সেখানে যে হয় অপেক্ষায় রয়েছেন সামনে কোড এবং অপেক্ষা পর কোড মধ্যে সম্পর্ক একটি "সামনে ঘটে"। এভাবেই আমরা তৃতীয় বিকল্পটি প্রয়োগ করি

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

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


6

আমি একজন বৈদ্যুতিক প্রকৌশলী, এবং আমরা লজিক সার্কিটের (লজিক গেটস) সিঙ্ক্রোনাস বনাম অ্যাসিনক্রোনাসের সাথে ডিল করেছি।

ধরা যাক আপনার একটি অ্যান্ড-গেট (বা কোনও গেট) রয়েছে, যার দুটি ইনপুট রয়েছে এবং একটি আউটপুট।

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

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


1
অ্যাসিঙ্ক্রোনাস / সিঙ্ক্রোনাস সিরিয়াল পোর্টের মতো।
জিওয়োপাইন

2

পৃথিবী প্রদক্ষিণ করে দুটি উপগ্রহ কল্পনা করুন।

  • স্যাটেলাইট এ পৃথিবীর চারদিকে ঘুরানোর একটি সময়কাল রয়েছে যেমন গ্রহের প্রতিটি পূর্ণ ঘূর্ণনের জন্য উপগ্রহ একাধিকবার বা কম সময়ে পৃথিবীর চারদিকে চলে গেছে ।
  • স্যাটেলাইট বি পৃথিবীর চারদিকে ঘুরানোর একটি সময়কাল রয়েছে যেমন গ্রহের প্রতিটি পূর্ণ ঘূর্ণনের জন্য উপগ্রহ ঠিক এক সময় পৃথিবীর চারদিকে চলে গেছে ।

উপরোক্ত উদাহরণে স্যাটেলাইট বি ভূ-সংশ্লেষিত কক্ষপথের দ্বারা নির্ধারিত হিসাবে রয়েছে

পৃথিবীর ঘূর্ণনের সাথে একযোগে আবর্তনের সময়কাল থাকে।

কেউ যুক্তি দেয় না যে উপগ্রহ এ ভূ-সংশ্লেষীয় কারণ এটি গ্রহ হিসাবে "একই সাথে উপস্থিত বা ঘটে [একই]"। বাস্তবে স্যাটেলাইট বি নিজেই যা প্রাসঙ্গিক তা নয় - প্রাসঙ্গিক যা ঘূর্ণন কাল যা পৃথিবীর ঘূর্ণন সময়কালের সাথে সুসংগত হয়। এটি বস্তুর একযোগে অস্তিত্ব সম্পর্কে নয়; এটি বস্তুর মধ্যে সম্পর্ক সম্পর্কে। এই চিন্তা ধরে।

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

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

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

func Invoker() {
    DoThis();
    DoThatAsync();

    var foo = CheckThis();
    ... do some work ...
    CheckThat(foo);

    await DoThatAsync();

    CheckThat();
}

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


আমি আসলে এটি পছন্দ। সাধারণভাবে এটি নির্বিচার নির্বাহের বন্য পশ্চিমে "অবিচ্ছিন্ন" বনাম একটি "সুসংগত" হিসাবে সংজ্ঞায়িত একটি পরিষ্কার মৃত্যুদন্ডের পথ
ক্র্যাঙ্কার

আমিও মনে করি যে এটিই সেরা উত্তর।
বারমার

2

কংক্রিট উদাহরণ

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

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

বিশ্লেষণ

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

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

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

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

বৈশিষ্ট্য সংজ্ঞায়িত করা হচ্ছে

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

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

সীমানা

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

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

সফ্টওয়্যার সংযোগ

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

সুসংগত

আপনি যখন একটি "সিঙ্ক্রোনাস আই / ও রিড" করেন, আপনার থ্রেডটি ডেটা উপলব্ধ না হওয়া পর্যন্ত অপেক্ষা করতে হবে , কোন পর্যায়ে এটি অবিরত থাকবে। এটি অনেকটা রিলে রানারকে পরের রানার হাতে ব্যাটন তুলে দিচ্ছে, তবে এর পরিবর্তে কল্পনা করুন যে কেবল দুটি রানার পুরো ট্র্যাকের চারদিকে চলেছে, এবং দ্বিতীয় রানারও প্রথমটিকে পিছনে ফেলে দেয়।

এই ক্ষেত্রে, আপনার প্রোগ্রামের থ্রেড এবং ওএস আই / ও প্রক্রিয়া একই সাথে "ঘটছে (অভিনয়)" হয় না, এবং তাই এই প্রক্রিয়াগুলি "সিঙ্ক্রোনাইজড" বলে অদ্ভুত বলে মনে হয়। তবে এটি দেখার ভুল উপায়! এটি বলার মতো: "রিলে দলের রানাররা একই সাথে চলছে না, তাই তারা সংক্রামিত হয় না।" আসলে দুটি বক্তব্যই ভুল! রিলে দলের রানাররা একই সাথে চালাতে হবে এবং এটি অবশ্যই একটি খুব নির্দিষ্ট মুহূর্তে: ব্যাটনের হাতছাড়া। প্রকৃতপক্ষে, রেসের সময়কালে এই বিশেষ মুহূর্তটিই আমাদের এই বিষয়টি নিশ্চিত করে যে রিলে দলগুলি শুরু করার জন্য সিঙ্ক্রোনাইজ হয়েছে! যদি আমরা I / O অনুরোধ এবং প্রতিক্রিয়াটিকে "ব্যাটন" হিসাবে দেখি তবে

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

প্রক্রিয়া বিভিন্নতা

এই কারণে, আমরা তিন ধরণের জিনিস চলছে তা দেখতে সহায়তা করতে আমরা কয়েকটি শর্ত উদ্ভাবন করতে পারি: "একজাতীয় সিনক্রোনারি", "ভিন্নধর্মী সিনক্রোনারি" এবং "ক্রমিক ক্রিয়াকলাপ" nch তাই অভিনেতারা যখন একই কাজ একই সাথে সম্পাদন করছেন (এফএএ, ফায়ারফ্লাইস), তারা "একজাতীয়"। যখন তারা একই সাথে বিভিন্ন কার্য সম্পাদন করে (সৈনিকরা চলমান বনাম ক্রলিং বনাম তাদের গন্তব্যগুলিতে সাঁতার কাটা, ফিজিক্স বনাম শব্দ বনাম একটি গেমের এআই থ্রেড) তখন তারা "ভিন্নধর্মী" হয়। যখন তারা একবারে কাজগুলি সম্পাদন করে, তখন তারা "ক্রমবর্ধমান" হয় (রিলে রানার্স, ব্লকিং I / O)। তারা দেখতে খুব আলাদা দেখতে পারে তবে তারা একটি প্রয়োজনীয় সম্পত্তি ভাগ করে নেয়: সমস্ত ধরণের অভিনেতা প্রত্যেকে একই সাথে সিঙ্ক্রোনাইজেশন পয়েন্টে পৌঁছে যায় তা নিশ্চিত করার জন্য কিছুটা অপেক্ষা করে perform সিঙ্ক্রোনাইজেশন পয়েন্টগুলির মধ্যে বা "একই ক্রিয়া সম্পাদন করা" সিঙ্ক্রোনসিটির সম্পত্তিটির সাথে অপ্রাসঙ্গিক।

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

এসিঙ্ক

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

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

উপমা

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

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

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

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


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

আমি মনে করি যে অন্যান্য উদাহরণগুলি একই সাথে বনাম ভিন্ন ভিন্ন ক্রিয়া প্রদর্শন করে, যা আমি বিশ্বাস করি যে ওপি'র বিভ্রান্তির অনেক কারণ ঘটেছে।
লনমাওয়ার ম্যান

1

ওয়ান ওয়ে ভাবতে এটি সম্পর্কে হয় SIMD নির্দেশাবলী, মত AVX । তারা কীভাবে ব্যবহৃত হয় তার কয়েকটি উদাহরণ এখানে দেওয়া হল ।

সিঙ্ক্রোনাস সিমডি নির্দেশাবলী আপনাকে একাধিক ডেটাতে একক নির্দেশ পরিচালনা করে একই থ্রেডে একই সময়ে একাধিক গণনা করতে দেয় ।

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

নিম্নলিখিত সংজ্ঞা সহ এটি একত্রিত করুন:

সিঙ্ক্রোনাস বিশেষণ syn · chro · nous | ˈসিয়া-ক্রি-এনস, সিন-

1: ঠিক একই সময়ে ঘটছে, বিদ্যমান রয়েছে বা উত্থিত হচ্ছে [জোর আমার]

অ্যাসিঙ্ক্রোনাস বিশেষণ asyn · chro · কাণ্ডজ্ঞান | \ (ˌ) ā-ˈsiŋ-krə-nəs, -সিন-

1: [...]: সিঙ্ক্রোনাস নয়


1

একটি সাদৃশ্য যা আমাকে সিঙ্ক বনাম অ্যাসিঙ্ক বনাম মাল্টি-থ্রেডের মধ্যে পার্থক্য বুঝতে পেরেছিল তা হ'ল রান্নাঘরের একটি রান্না।

ভাবুন আপনি পাস্তা তৈরি করছেন। আপনার তিনটি পদক্ষেপ রয়েছে:

  1. পাস্তা সিদ্ধ করে ড্রেইন করুন
  2. সস প্রস্তুত
  3. পাস্তা এবং সস একত্রিত করুন

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

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

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


এটি আসলে বেশ ভাল উপমা।
রবার্ট হার্ভে

0

একটি ভাল প্রশ্ন এবং পদগুলি যা প্রায়শই বিভিন্ন উপায়ে ব্যবহার করা হয় যা বিভ্রান্তির দিকে পরিচালিত করে।

আমার উত্তরটি হ'ল এই শর্তগুলি আপেক্ষিক - এবং এগুলির সাথে যা সম্পর্কিত তা হ'ল মূল প্রোগ্রাম যা সম্পাদন করছে (বা কখনও কখনও কোনও থ্রেডের সাথে)।

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

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


অ-ব্লকিং অ্যাসিঙ্ক্রোনাস থেকে পৃথক,
ব্যবহারকারী 207421

1
@ ব্যবহারকারী 207421 দয়া করে বিশদভাবে বর্ণনা করুন, কারণ আমি তাদেরকে এই প্রসঙ্গে প্রতিশব্দ
বলব

0

"সিঙ্ক্রোনাস" এর অর্থ একই সাথে দুটি ঘটনা ঘটে - তবে কোন ঘটনা?

যখন আমরা "সিঙ্ক্রোনাস এক্সিকিউশন" বলি, আমাদের অর্থ হ'ল কলার এবং কলি একই সাথে কার্যকর করা হচ্ছে (অর্থাত স্ট্যাকের উপরে)। আপনি সম্ভবত এই অর্থ হয়।

যখন আমরা "সিঙ্ক্রোনাস লজিক গেট" বলি, আমাদের অর্থ লজিক গেটটি সিপিইউ ক্লকটির সাথে সিঙ্ক্রোনাইজ করা হয়।

যখন আমরা বিতরণ করা সিস্টেমগুলির প্রসঙ্গে "সিনক্রোনাস মডেল" বলি, তখন আমাদের অর্থ হ'ল সমস্ত নোডগুলি তাদের প্রোগ্রামগুলি লক-স্টেপে চালায় এবং পদক্ষেপ এন-তে প্রেরিত বার্তাগুলি পদক্ষেপ এন + 1-এর শুরুতে পৌঁছানোর গ্যারান্টিযুক্ত।

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

... এবং আমি নিশ্চিত যে আপনি শব্দটি আরও প্রসঙ্গে ব্যবহার করতে পারেন, কারণ "জিনিস একই সাথে ঘটে" বেশ সাধারণ ধারণা :-)


0

আমি মনে করি আপনার বিভ্রান্তির মূলটি এই দ্বারা সংক্ষিপ্ত করা যেতে পারে:

অ্যাসিঙ্ক বৈশিষ্ট্যটির অর্থ হ'ল এইচটিএমএল এখনও বিশ্লেষণ করে থাকলেও স্ক্রিপ্টটি ডাউনলোড করার সাথে সাথেই এটি কার্যকর করা হবে

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

প্রোগ্রামিংয়ে, সিঙ্ক্রোনাস অর্থ:

আপনি আপনার যুক্তি সম্পাদন করার সময় মেমরিতে ইতিমধ্যে আগ্রহী সমস্ত ডেটা ইতিমধ্যে বিদ্যমান

যদিও অ্যাসিনক্রোনাস অর্থ:

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

প্রকৃতপক্ষে, এটি অ্যাসিক্রোনাস প্রোগ্রামিংয়ের এই বর্তমান-বর্তমান দিক যা সাধারণত মানুষকে বিভ্রান্ত করে।

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

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

সুতরাং সংক্ষেপে:

  • সিঙ্ক্রোনাস স্ক্রিপ্টগুলি এইচটিএমএল এর সাথে একসাথে পার্স করা হয়।

  • অ্যাসিঙ্ক্রোনাস স্ক্রিপ্টগুলি ভবিষ্যতে পৃথকভাবে পার্স করা হয়েছে।

সুতরাং asyncসম্পত্তির সংজ্ঞাটি এই নয় যে স্ক্রিপ্টটি ডাউনলোড করার সাথে সাথেই সম্পাদন করা হয় - এটি সিঙ্ক্রোনাস এবং অ্যাসিনক্রোনাস স্ক্রিপ্ট উভয়ের ক্ষেত্রেই সত্য। Async এর সংজ্ঞাটি এইচটিএমএল পার্সিংটি স্ক্রিপ্টটি ডাউনলোড হওয়ার অপেক্ষা করে না

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