সসীম-রাষ্ট্র-মেশিন ভাঙ্গন থেকে কীভাবে পুনরুদ্ধার করবেন?


14

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

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

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

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

সুতরাং চূড়ান্ত প্রশ্ন হ'ল আমি কীভাবে এড়াতে পারি, এবং কীভাবে সিস্টেমকে নিজেকে ব্লক করা থেকে রক্ষা করব?

সম্পাদনা> আমি ফোনে একটি ভিউকন্ট্রোলারের দৃশ্যের প্রসঙ্গে কথা বলছি, আমি আবেদনের একটি অংশ বুঝি। আমি এমভিসি প্যাটার্নটি বুঝতে পারি, স্বতন্ত্র কার্যকারিতার জন্য আমার পৃথক পৃথক মডিউল রয়েছে ... আমি যা কিছু বর্ণনা করি তা ইউআই এর একটি ক্যানভাসের সাথে প্রাসঙ্গিক।


2
ইউনিট পরীক্ষার জন্য কেসের মতো শোনাচ্ছে!
মাইকেল কে

উত্তর:


7

আমি নিশ্চিত আপনি ইতিমধ্যে এটি জানেন তবে কেবল ক্ষেত্রে:

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

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

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

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

  2. নিশ্চিত হয়ে নিন যে রাষ্ট্রীয় যন্ত্রটি প্রাপ্ত ইনপুটটির প্রতিক্রিয়া হিসাবে কেবলমাত্র একটিই চাপ দিতে পারে বা অনুসরণ করতে পারে (একাধিক চাপ নয়)।

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

    IE যদি কোনও "জ্ঞাত" স্থিতিতে ত্রুটি বা অজানা প্রাপ্ত হয়, তবে ত্রুটি পরিচালনা / অজানা ইনপুটগুলির ফলস্বরূপ অনুসরণ করা আরাকগুলি কোনও অবস্থাতেই ফিরে আসবে না যদি মেশিনটি কেবলমাত্র পরিচিত ইনপুটগুলি পেয়ে থাকে তবে।

  3. একবার আপনি টার্মিনাল (শেষ) অবস্থায় পৌঁছালে আপনি কেবলমাত্র প্রারম্ভিক (প্রাথমিক) অবস্থায় কোনও অ-টার্মিনালে ফিরে আসতে সক্ষম হবেন না।

  4. একটি রাষ্ট্রের মেশিনের জন্য একের বেশি বা প্রাথমিক অবস্থা হওয়া উচিত নয় (আমি যে উদাহরণগুলি দেখেছি তার উপর ভিত্তি করে)।

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


10

সসীম রাষ্ট্র মেশিনের বিষয়টি হ'ল এটিতে একটি রাজ্যে ঘটতে পারে এমন সমস্ত কিছুর জন্য সুস্পষ্ট নিয়ম রয়েছে। এ কারণেই এটি সসীম

এই ক্ষেত্রে:

if a:
  print a
elif b:
  print b

কি না , সসীম কারণ আমরা ইনপুট পেতে পারে c। এই:

if a:
  print a
elif b:
  print b
else:
  print error

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

No money state. 
Not enough money state.
Pick soda state.

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

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

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


"আমরা ইনপুট সি পেতে পারি" - এ কারণেই টাইপসেফ ভাষা এত গুরুত্বপূর্ণ। আপনার ইনপুট টাইপ একটি bool হয়, তাহলে আপনি পেতে পারেন trueএবং false, কিন্তু অন্য কিছুই নয়। তারপরেও আপনার প্রকারগুলি বোঝা গুরুত্বপূর্ণ - যেমন নুলযোগ্য প্রকারগুলি, ভাসমান পয়েন্ট NaNইত্যাদি
এমসাল্টারস

5

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

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

আপনার এফএসএম এর মতো একটি ব্যর্থতা বা ত্রুটিযুক্ত অবস্থার মধ্যে রূপান্তর (যেমন আপনি প্রত্যাশা করেন না) এবং অন্তর্নিহিত (যে ক্ষেত্রে আপনি প্রত্যাশা করেন না) উভয়ই আপনার এফএসএমের মতো একটি ত্রুটি রাষ্ট্র বা ব্যর্থতা রাষ্ট্র বা নৈতিক সমতুল্য প্রয়োজন।


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

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

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

3

এটি এড়ানোর সর্বোত্তম উপায় হ'ল অটোমেটেড টেস্টিং

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

এটি প্রমাণ করতে সক্ষম হবে না যে রাষ্ট্রীয় মেশিনটি কখনই ভাঙা যায় না, তবে এটি আপনাকে বলে দেবে যে প্রচলিত সাধারণ কেসগুলি সঠিকভাবে পরিচালনা করা হয় এবং অন্যান্য জিনিসগুলি ভাঙ্গেন না।


2

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

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

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

আমি কোনও উদ্দেশ্য-সি বিশেষজ্ঞ নই, তবে এই পৃষ্ঠাটি একটি ভাল সূচনা পয়েন্ট হওয়া উচিত:

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocExceptionHandling.html


1

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

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

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

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

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

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

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

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