অ্যাসিঙ্ক্রোনাস বনাম সিঙ্ক্রোনাস এক্সিকিউশন, এর আসলে কী অর্থ? [বন্ধ]


1186

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


... বা "সিক্যুয়ালাল বনাম সমান্তরাল" সম্পাদনা ... যদিও সত্য প্যারালালিজমের জন্য একাধিক কোর প্রয়োজন, অন্যথায় এটি যৌক্তিকভাবে আন্তঃবিস্তারিত।
সমিস

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

উত্তর:


1746

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

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

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

আপনি যখন একই সাথে জিনিসগুলি করতে পারেন তখন জিনিসগুলি কীভাবে একসাথে বেঁধে যায় তার শব্দার্থবিজ্ঞানের কারণে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং একটি জটিল বিষয়। এই বিষয়টিতে অসংখ্য নিবন্ধ এবং বই রয়েছে; একবার দেখুন!


246
আমাকে যে বিষয়টি পুরোপুরি বিভ্রান্ত করে তা হ'ল সিঙ্ক্রোনাস অর্থ "একই সাথে", তবুও যখন উপরের অর্থে ব্যবহৃত হয় তখন এর অর্থ ধারাবাহিক এবং অ্যাসিঙ্ক্রোনাস অর্থ "একই সময়ে নয়" ... ?? কেউ এই দ্বন্দ্ব ব্যাখ্যা করতে পারেন?
ড্যামিয়েন রোচে

45
@ জেন্ফ: এই প্রসঙ্গে, কোডের একটি সম্পূর্ণ ব্লক আমাদের সাথে উদ্বিগ্ন। সিঙ্ক্রোনাস অর্থ ব্লক একই সময়ে কার্যকর করা হয় (যদিও, হ্যাঁ, উপাদানগুলি ক্রমান্বয়ে কার্যকর করা হয়)। অ্যাসিঙ্ক্রোনাস মানে ব্লকটি একই সাথে কার্যকর করা হয় না।
অ্যাডাম রবিনসন

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

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

14
পদগুলি ইঞ্জিনিয়ারিং থেকে আসে। en.wikedia.org/wiki/Asynchronous_system
টম প্যাডিলা

1150

সিঙ্ক্রোনাস / অ্যাসিনক্রোনাস মাল্টি-থ্রেডিংয়ের সাথে কিছুই করার নেই।

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

সিঙ্ক্রোনাস (একটি থ্রেড):

1 thread ->   |<---A---->||<----B---------->||<------C----->|

সিঙ্ক্রোনাস (বহু-থ্রেডযুক্ত):

thread A -> |<---A---->|   
                        \  
thread B ------------>   ->|<----B---------->|   
                                              \   
thread C ---------------------------------->   ->|<------C----->| 

অ্যাসিনক্রোনাস (একটি থ্রেড):

         A-Start ------------------------------------------ A-End   
           | B-Start -----------------------------------------|--- B-End   
           |    |      C-Start ------------------- C-End      |      |   
           |    |       |                           |         |      |
           V    V       V                           V         V      V      
1 thread->|<-A-|<--B---|<-C-|-A-|-C-|--A--|-B-|--C-->|---A---->|--B-->| 

অ্যাসিনক্রোনাস (বহু-থ্রেডেড):

 thread A ->     |<---A---->|
 thread B ----->     |<----B---------->| 
 thread C --------->     |<------C--------->|
  • স্টার্ট এবং কর্ম, A, B, C দ্বারা প্রতিনিধিত্ব শেষে পয়েন্ট <, >অক্ষর।
  • উল্লম্ব বার দ্বারা প্রতিনিধিত্ব করা সিপিইউ সময়ের স্লাইস |

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


অ্যাসিচক্রোনাস উদাহরণ:

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

সাইনক্রোনাস উদাহরণ:

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


92
বিশ্বে শব্দগুলি কম্পিউটারে বিভিন্ন জিনিসকে কেন বোঝায় ... সর্বদা আমাকে এই দিকে ফিরে আসতে দাও ... অভিধান থেকে .. সমকালীন: একই সময়ে ঘটছে। অ্যাসিনক্রোনাস: একই সময়ে ঘটছে না।
মুহাম্মদ উমার

17
কম্পিউটারে আপনি দেখতে পাচ্ছেন এর বিপরীত অর্থ
মুহাম্মদ উমার

5
সম্ভবত নামকরণটি অন্য কাজগুলি সমাপ্তির সাথে কাজগুলির সূচনাটি "সিঙ্ক্রোনাইজড" হয় কিনা তার উপর ভিত্তি করে?
চার্লস ব্রেটানা

11
@ মুহাম্মাদ উমার: কম্পিউটার জগতে একই সাথে সংঘটিত হওয়ার ঘটনাটিকে সমঝোতা বলে।
রায় লিং

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

641

সহজ কথায়:

সমলয়

আপনি সিনেমার টিকিট পেতে একটি সারিতে রয়েছেন। আপনার সামনের প্রত্যেকটি না পাওয়া পর্যন্ত আপনি একটি পেতে পারবেন না এবং এটি আপনার পিছনে সারি করা লোকদের জন্য প্রযোজ্য।

অসমনিয়ত

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


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

কেবল যোগ করার জন্য ... এটি এমন হতে পারে যে অপারেশনগুলি অ্যাসিঙ্ক্রোনাস অপারেশনে একটি কাতারের মতো চালানো যেতে পারে ... তবে এটি মোটেও বাধ্যতামূলক নয়।
শ্রীকান্ত করুণাঘাট

5
খুব সাধারণ এবং বাস্তব জীবনের উদাহরণ
মণীশ

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

334

উপমা মাধ্যমে সহজ ব্যাখ্যা

সিঙ্ক্রোনাস এক্সিকিউশন

আমার বস একজন ব্যস্ত মানুষ। সে আমাকে কোড লিখতে বলে। আমি তাকে বলি: ভাল। আমি শুরু করি এবং তিনি আমাকে কাঁধের মতো শকুনের মতো দেখছেন, আমার পিছনে দাঁড়িয়ে আছেন। আমি "ডুড, ডাব্লুটিএফএফ এর মত: আপনি এই কাজ শেষ করার সময় কেন কিছু করবেন না?"

তিনি এর মতো: "না, আপনি শেষ না করা পর্যন্ত আমি এখানে অপেক্ষা করছি " " এটি সিনক্রোনাস।

অ্যাসিঙ্ক্রোনাস এক্সিকিউশন

বস আমাকে এটি করতে বলেছিলেন এবং আমার কাজের জন্য সেখানে অপেক্ষা করার পরিবর্তে বস চলে যান এবং অন্যান্য কাজ করেন। আমি যখন আমার কাজ শেষ করি আমি কেবল আমার মনিবকে রিপোর্ট করে বলি: "আমি হয়ে গেলাম!" এটি অ্যাসিঙ্ক্রোনাস এক্সিকিউশন।

(আমার পরামর্শ নিন: আপনার পিছনে বসের সাথে কখনও কাজ করবেন না))


28
আমি পদত্যাগ করছি ... আপনি যখন এটি পদত্যাগ হিসাবে গ্রহণ করবেন তখন এটি আরও মজাদার।
ডেয়েড্রিক

91

সিঙ্ক্রোনাস এক্সিকিউশন মানে একটি একক সিরিজে মৃত্যুদন্ড কার্যকর হয়। A->B->C->D। আপনি যদি সেই রুটিনগুলিকে কল করে থাকেন, Aচলবে, তারপরে সমাপ্ত Bহবে, তারপরে শুরু হবে, তারপরে সমাপ্ত হবেC হবে, ইত্যাদি

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

স্টার্ট A->B->C->D->অপেক্ষা জন্যAশেষ করার

সুবিধা হলো আপনি নির্বাহ করতে পারেন হয় B, Cএবং অথবা Dযখন Aযার ফলে আপনি আপনার সম্পদের ভাল সুবিধা গ্রহণ এবং কম "হ্যাং" বা "অপেক্ষা করছে" থাকতে পারে, এখনও (একটি পৃথক থ্রেডে পটভূমিতে) চলছে।


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

8
@ দেবরথ অপারেশনগুলি যে কোনও ক্রমে শেষ করতে পারে।
রিড কোপসি

59

সংক্ষেপে, সিঙ্ক্রোনাইজেশন দুই বা ততোধিক প্রসেস 'বোঝায় শুরু এবং শেষ পয়েন্ট, না তাদের মৃত্যুদণ্ড কার্যকর । এই উদাহরণে, প্রসেস এ এর ​​শেষ পয়েন্টটি প্রসেস বি এর প্রারম্ভ পয়েন্টের সাথে সুসংগত হয়:

সমলয়
   | -------- একটি -------- |
                     | -------- বি -------- |

অ্যাসিঙ্ক্রোনাস প্রক্রিয়া, অপরপক্ষে, না না তাদের যাত্রা শুরু এবং শেষ সিঙ্ক্রোনাইজ আছে:

অসমনিয়ত
   | -------- একটি -------- |
         | -------- বি -------- |

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

আপডেট: চার্লস ব্রেটানা তার উত্তরটির উন্নতি করেছে , সুতরাং এই উত্তরটি এখন কেবল একটি সাধারণ (সম্ভাব্যভাবে ওভারসিম্প্লাইফাইড) স্মৃতিচক্র।


2
চার্লস ব্রেটানার উত্তরের অনুলিপি
দীনেশ সায়নী

2
@ দিনেশসেনি - আমার চিত্রটি কিছুটা আলাদা। স্পষ্টতার জন্য, আমি উভয় ক্ষেত্রে A কে B এর শীর্ষে স্থাপন করেছি, তাদের শুরু এবং শেষের বিন্দুগুলি সিঙ্ক্রোনাইজ হয়েছে কিনা তা জোর দিয়ে। চার্লস ব্রেটানার ডায়াগ্রাম কোনও কিছুকে "সিঙ্ক না করে" ক্রমে সিঙ্ক্রোনাস প্রসেসগুলিতে রাখে। (আমি তার উত্তরটির নীচে এটি "উন্নত" করার জন্য মন্তব্য করতে যাচ্ছিলাম তবে বুঝতে পেরেছিলাম যে কেবল নতুন চিত্রটি দেখানো আরও সহজ হবে))
এন্ট্রিপয়েন্টে

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

55

সিঙ্ক্রোনাসের অর্থ হ'ল কলার প্রতিক্রিয়া বা সমাপ্তির জন্য অপেক্ষা করে, সংযোজক যে কলার অবিরত থাকে এবং একটি প্রতিক্রিয়া পরে আসে (যদি প্রযোজ্য হয়)।

উদাহরণ হিসাবে:

    static void Main(string[] args)
    {
        Console.WriteLine("Before call");
        doSomething();
        Console.WriteLine("After call");
    }

    private static void doSomething()
    {
        Console.WriteLine("In call");
    }

এটি সর্বদা আউটপুট হবে:

Before call
In call
After call

তবে যদি আমরা ডস কিছুকে অ্যাসিঙ্ক্রোনাস করতে হয় (এটি করার একাধিক উপায়), তবে আউটপুটটি হয়ে উঠতে পারে:

Before call
After call
In call

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


34

আমি মনে করি এটি বিস্তৃতভাবে ব্যাখ্যা তবে এটি বাস্তব জীবনের উদাহরণ ব্যবহার করে স্পষ্ট করে।

ছোট উদাহরণ:

ধরা যাক একটি অডিও বাজানোতে তিনটি পদক্ষেপ জড়িত:

  1. হার্ডডিস্ক থেকে সংকুচিত গানটি পাওয়া
  2. অডিওকে সঙ্কোচিত করুন।
  3. অসম্পূর্ণ অডিও খেলুন।

যদি আপনার অডিও প্লেয়ার প্রতিটি গানের জন্য যথাক্রমে 1,2,3 পদক্ষেপটি করে তবে তা সিঙ্ক্রোনাস। গানটি আসার জন্য এবং সংক্ষেপিত না হওয়া পর্যন্ত আপনাকে গানটি শুনতে কিছুটা সময় অপেক্ষা করতে হবে।

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


32

সিঙ্ক এবং অ্যাসিঙ্ক অপারেশনগুলি বর্তমান কার্যের সাথে সম্পর্কিত একটি কার্যকর কার্যাদেশের আদেশ সম্পর্কে । একটি টেবিলের দুটি কাজ: বর্তমান কাজ এবং একটি নতুন টাস্ক

সিঙ্ক্রোনাস (ব্লক করা) - বোঝায় যে কার্যগুলি একের পর এক সম্পাদিত হবে। পরবর্তী কাজটি তার পূর্ববর্তী কাজ শেষ হওয়ার পরেই শুরু করা হয়। Task 2যতক্ষণ না শুরু Task 1সমাপ্ত হয়

অ্যাসিনক্রোনাস (অ-অবরুদ্ধকরণ) - এর দ্বারা বোঝা যায় যে কোনও কোড কার্যকর করার এবং পরে ফলাফল সম্পর্কে অবহিত করার (যেমন কলব্যাক, বৈশিষ্ট্য) প্রতিশ্রুতি দিয়ে কাজটি তত্ক্ষণাত নিয়ন্ত্রণ প্রদান করে। শেষ না Task 2হলেও কার্যকর করা হয়Task 1

সিঙ্ক এবং অ্যাসিঙ্ক সম্পর্কে SO উত্তর: আইওএস এ , অ্যান্ড্রয়েডে


সিঙ্ক্রোনাস বহু-থ্রেডযুক্ত উদাহরণে চিত্রটি একই সাথে চালিত থ্রেডগুলি চিত্রিত করে?
সামিস

@ সামোসিস আপনি থ্রেডকে এক্স অক্ষের মতো বিবেচনা করতে পারেন যা টাইমলাইন নির্দেশ করে
yoAlex5

এক্স-অক্ষটি প্রচলিতভাবে একটি স্পেসিয়াল ডাইমেনশন হিসাবে ব্যবহৃত হয়; সময়ের জন্য টি-অক্ষ - অ্যালগরিদম জটিলতার বিশ্লেষণে একটি গুরুত্বপূর্ণ পার্থক্য।
সামিস

23

সহজভাবে বলেছেন যে অ্যাসিঙ্ক্রোনাস এক্সিকিউশন ব্যাকগ্রাউন্ডে স্টাফ করছে।

উদাহরণস্বরূপ আপনি যদি ইন্টারনেট থেকে কোনও ফাইল ডাউনলোড করতে চান তবে আপনি এটি করতে সিঙ্ক্রোনাস ফাংশন ব্যবহার করতে পারেন তবে ফাইলটি ডাউনলোড শেষ হওয়া অবধি এটি আপনার থ্রেডটিকে ব্লক করে দেবে। এটি আপনার অ্যাপ্লিকেশনটিকে কোনও ব্যবহারকারীর ইনপুটকে প্রতিক্রিয়াহীন করতে পারে।

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


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

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

19

সত্যিই একটি সহজ উদাহরণ হিসাবে,

সমলয়

কল্পনা করুন 3 স্কুল শিক্ষার্থী একটি রাস্তায় রিলে রেস চালানোর জন্য নির্দেশ দিয়েছে।

প্রথম শিক্ষার্থী তার প্রদত্ত দূরত্ব চালায়, থামবে এবং ২ য় স্থানে ব্যাটনটি পাস করবে। আর কেউ চালাতে শুরু করেনি।

1------>
        2.
                3.

২ য় ছাত্র যখন লাঠিটি পুনরুদ্ধার করে, তখন সে তার প্রদত্ত দূরত্ব চালাতে শুরু করে।

      1.
        2------>
                3.

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

      1.
        --2.--->
                3.

এই প্যাটার্নটি ২ য় থেকে ব্যাটন পুনরুদ্ধার এবং রেস শেষ করার আগ পর্যন্ত অব্যাহত থাকবে।

অসমনিয়ত

ঠিক 10 জন এলোমেলো লোক একই রাস্তায় হাঁটুন। তারা অবশ্যই কোনও কাতারে নেই, এলোমেলোভাবে বিভিন্ন গতিতে রাস্তায় বিভিন্ন স্থানে হাঁটছে।

২ য় ব্যক্তির জুতো খুলে ফেলা হয়নি। এটিকে আবার বেঁধে রাখতে সে থামল।

তবে কেউ এটি বেঁধে রাখার জন্য অপেক্ষা করছে না। অন্য প্রত্যেকে এখনও তাদের আগের মতো একই পথে চলছিল।

10-->    9-->
   8--> 7-->   6-->
 5-->     4-->
1-->   2.    3-->

18

আমি এটি ব্যাখ্যা করার জন্য একটি জিআইএফ তৈরি করেছি, সহায়ক হবে বলে আশা করি: দেখুন, লাইন 3টি অ্যাসিনক্রোনাস এবং অন্যরা সমকালীন। লাইন 3 এর আগে সমস্ত রেখার কাজ লাইন শেষ হওয়ার আগে অপেক্ষা করা উচিত, তবে 3 লাইনের কারণে অ্যাসিনক্রোনাস, পরবর্তী লাইন (লাইন 4), 3 লাইনটির জন্য অপেক্ষা করবেন না, তবে লাইন 5 লাইন 4 এর কাজ শেষ করার জন্য অপেক্ষা করবে, এবং লাইন 6 6 এর জন্য 5 এবং 7 রেখার জন্য অপেক্ষা করা উচিত, কারণ 4,5,6,7 লাইন অ্যাসিঙ্ক্রোনাস নয়। লাইন 3 হ'ল অ্যাসিনক্রোনাস এবং অন্যরা সমকালীন


12

একটি ক্রম যেমন: a> b> c> d> সম্পাদন করার সময়, যদি আমরা মৃত্যুদন্ড কার্যকর করার মাঝামাঝি কোনও ব্যর্থতা পাই তবে:

a
b
c
fail

তারপরে আমরা শুরু থেকে পুনরায় শুরু করি:

a
b
c
d

এটি সমকালীন

তবে যাইহোক, আমাদের কার্যকর করতে একই ধারাবাহিকতা রয়েছে: a> b> c> d>, এবং আমাদের মাঝখানে একটি ব্যর্থতা রয়েছে:

a
b
c
fail

... তবে শুরু থেকে পুনরায় আরম্ভ করার পরিবর্তে আমরা ব্যর্থতার দিক থেকে আবার শুরু করি:

c
d

... এটি অ্যাসিক্রোনাস হিসাবে জানি।


1
আপনার উদাহরণগুলিতে আরও প্রসঙ্গ সরবরাহ করে আপনি কী বোঝাতে চেয়েছেন দয়া করে আপনি আরও নিখুঁত হতে পারেন
krichard

5
এই উত্তরটি কেবল সঠিক নয়।
ব্যবহারকারী 207421

7

আপনি সমান্তরাল বনাম সিরিজের সাথে সিঙ্ক্রোনাসকে বিভ্রান্ত করছেন। সিঙ্ক্রোনাস মানে একই সাথে। সিঙ্ক্রোনাইজড অর্থ প্রতিটি ওথের সম্পর্কিত যা সিরিজ বা একটি নির্দিষ্ট বিরতিতে অর্থ হতে পারে to প্রোগ্রামটি সমস্ত করছে, এটি ধারাবাহিকভাবে চলছে। একটি অভিধান পান ... এই কারণেই আমাদের চাবি নেই। আপনার চা বা মিষ্টি চা আছে।


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

1
সমলয় নেই না কম্পিউটিং এ 'একই সময়ে সব' বলতে। আপনি সিঙ্ক্রোনাসের সাথে বিভ্রান্তিকর সিঙ্ক্রোনাইজেশন করছেন, এবং চা এবং মিষ্টি চায়ের সাথে 'সমান্তরাল বনাম সিরিজ'। উত্তর যা কিছু তা বোঝায় না।
ব্যবহারকারী 207421

7

সিঙ্ক্রোনাস মূলত এর অর্থ হল যে আপনি একবারে কেবল একটি জিনিস কার্যকর করতে পারেন। অ্যাসিঙ্ক্রোনাসের অর্থ হ'ল আপনি একসাথে একাধিক জিনিস কার্যকর করতে পারেন এবং পরবর্তী কোনওটিতে যাওয়ার জন্য আপনাকে বর্তমান জিনিসটি সম্পাদন শেষ করতে হবে না।


অ্যাসিঙ্ক্রোনাসের পরিবর্তে মাল্টিথ্রেডিং নামে একসাথে কার্যকর করা একাধিক জিনিস নয়।
শ্রীকান্ত করুণাঘাট

7

প্রাতঃরাশের জন্য নির্দেশনার উদাহরণ ব্যবহার করুন

  1. এক কাপ কফি .ালুন।
  2. একটি প্যান গরম করুন, তারপরে দুটি ডিম ভাজুন।
  3. তিন টুকরো টুকরো টুকরো টুকরো করে ভাজুন।
  4. টুকরো টুকরো রুটি।
  5. টোস্টে মাখন এবং জাম যোগ করুন।
  6. কমলার রস এক গ্লাস .ালা।

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

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

সমান্তরাল অ্যালগরিদমের জন্য আপনার একাধিক রান্না (বা থ্রেড) লাগবে। একটি ডিম তৈরি করত, একটি বেকন ইত্যাদি on প্রত্যেকে কেবলমাত্র একটি কাজে মনোনিবেশ করা হবে। প্রতিটি কুক (বা থ্রেড) বেকন ফ্লিপ করার জন্য প্রস্তুত হওয়ার জন্য, বা টোস্টটি পপ করার জন্য সিঙ্ক্রোনজভাবে অবরুদ্ধ করা হবে।

অ্যাসিনক্রোনাস প্রোগ্রামিং ধারণা থেকে রেফারেন্স


4

একটি সিঙ্ক্রোনাস অপারেশন কলারে ফিরে যাওয়ার আগে তার কাজটি করে।

একটি অ্যাসিক্রোনাস অপারেশন কলারে ফিরে যাওয়ার পরে (বেশিরভাগ বা সমস্ত) কাজ করে।


লিঙ্কটি মারা গেছে।
আশাকরি

1

" একই সাথে সমলয় মৃত্যুদণ্ড" ডেফিনেশনে (যা কখনও বিভ্রান্তিকর হয়), এখানে একটি ভালো উপায় তা বুঝতে দেওয়া হল:

সিঙ্ক্রোনাস এক্সিকিউশন : কোডের ব্লকের মধ্যে থাকা সমস্ত কাজ একই সময়ে কার্যকর করা হয়।

অ্যাসিঙ্ক্রোনাস এক্সিকিউশন : কোডের ব্লকের মধ্যে থাকা সমস্ত কাজ একই সময়ে কার্যকর করা হয় না।


আমি 'ব্যবহারিক উদ্দেশ্যে' আরও এই সঙ্গে একমত হবে যদি আপনি 'কার্যকরভাবে একই সময়ে' বললেন, বা .. আমি মনে করি downvote বেঠিক বিবৃতি যে জিনিসের জন্য ছিল আসলে একই tiem এ কাজ হচ্ছে।
ডিন র‌্যাডক্লিফ

1

আমি মনে করি এটির একটি ভাল উপায় হ'ল একটি ক্লাসিক চলমান রিলে রেস

সিঙ্ক্রোনাস : একই দলের সদস্যদের মতো প্রক্রিয়াগুলি, তারা লাঠি না পাওয়া পর্যন্ত কার্যকর করা হবে না (পূর্ববর্তী প্রক্রিয়া / রানার মৃত্যুদন্ডের সমাপ্তি) এবং তবুও তারা সবাই একে অপরের সাথে সিঙ্কে অভিনয় করে।

অ্যাসিনক্রোনাস : যেখানে একই দলের সাথে বিভিন্ন দলের সদস্যদের মতো প্রক্রিয়া চলে সেখানে তারা একে অপরের সাথে অ্যাসিঙ্ক হিসাবে চলবে এবং থামবে, তবে একই রেসের মধ্যে (সামগ্রিক প্রোগ্রামের সম্পাদন)।

এটা বোঝা যায় না?


1

সিঙ্ক্রোনাইজের একটি আলাদা ইংরেজি সংজ্ঞা হ'ল এখানে

স্থানাঙ্ক; একত্র করি।

আমি মনে করি এটি "একই সাথে ঘটছে" এর চেয়ে আরও ভাল সংজ্ঞা। এটিও একটি সংজ্ঞা, তবে আমি মনে করি না এটি কম্পিউটার বিজ্ঞানের ক্ষেত্রে এটি যেভাবে ব্যবহৃত হয় তা ফিট করে।

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

কীভাবে এটি অর্জিত হয় তা ভিন্ন প্রশ্ন।


0

সিঙ্ক্রোনাস মানে এক এক করে কার্য সম্পাদন কার্যকর করা হবে। মনে করুন যে একমাত্র গাড়ীর সাথে তার গন্তব্যে পৌঁছতে বন্ধুর মধ্যে ভাগ করে নেওয়া দরকার এক এক করে যান ভাগ হয়ে যাবে।
অ্যাসিক্রোনাস ক্ষেত্রে প্রতিটি বন্ধু ভাড়া দেওয়া গাড়ি পেতে এবং তার গন্তব্যে পৌঁছতে পারে।


0

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

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