[Powered by Google Translate] Nate HARDISON: যখন আপনি পেয়েছেন একাধিক প্রোগ্রাম একটি খোলা কম্পিউটার, সবকিছু এর মত মনে হচ্ছে একই সময়ে চলমান. উদাহরণস্বরূপ, আপনি একটি ওয়েব ব্রাউজারের মত কাজ করা হতে পারে ফায়ারফক্স বা ইন্টারনেট এক্সপ্লোরার, আই টিউনস গান শুনতে শুনতে, এবং শব্দ সঙ্গে একটি প্রবন্ধ লেখা. যাইহোক, অধীন ফণা, আসলে প্রোগ্রাম একটি সময়ে এক রান. এটি অপারেটিং সিস্টেমের কাজ, Windows, Mac OSX, অথবা Linux-এ এই প্রক্রিয়ার প্রতিটি পৃথক পরিচালনা হিসাবে, প্রোগ্রাম, পরিচিত এবং তাদের মধ্যে তাই সুইচ হয় যে যখন আপনি আপনার রচনার কাজ আপনার Facebook পাতা চেক থেকে যান আবার, শব্দ হয় যে একটি চলমান এর. যদিও কখনও কখনও,, আমরা নিজেরাই করতে সক্ষম প্রোগ্রাম চাই এই মত একাধিক জিনিষ, খুব না. আপনি যদি আমার মত হন, সম্ভবত আপনার একটি গুচ্ছ আছে বিভিন্ন ট্যাব প্রদর্শন করে আপনার ওয়েব ব্রাউজার, ইমেইলের জন্য একটি খোলা, এক একটি ক্যালেন্ডার সঙ্গে, এবং তাই. আমরা একটি পৃথক প্রোগ্রাম বা প্রক্রিয়া হিসাবে প্রতিটি ট্যাব আচরণ করতে পারে, Google Chrome-এর মত আছে, কিন্তু অনেক প্রোগ্রামের একটি ব্যবহার একটি প্রক্রিয়ার লাইটার-ওজন সংস্করণ নামক একটি থ্রেড. হল থ্রেড শুধু প্রক্রিয়াকরণের মাধ্যমে আরেকটি ইউনিট, একটি সেট নির্দেশ অথবা কোড যে "রান" করতে পারেন, উদ্ধৃতি উদ্ধতি, একযোগে সঙ্গে অন্যান্য থ্রেড. এটা কি করে সম্ভব জন্য আপনি ফেসবুক ব্রাউজ করুন আমার যখন শোনা পটভূমি অথবা দুটি আছে YouTube ভিডিও একই সময়ে বাজানো. সুতরাং, এই সাধারণ বিষয়, concurrency হিসাবে পরিচিত, সাধারণত কিন্তু আপ করুন যাতে প্রথম দিকে কম্পিউটার বিজ্ঞান কোর্স না আসা কারণ নিম্ন স্তরের বিস্তারিত আলোচনা প্রয়োজন অপারেটিং সিস্টেম এবং ভালো. যাইহোক, প্রোগ্রামিং ভাষা আমরা ব্যবহার প্রারম্ভে এর CS50 ভূত,, যাও কিছু চৌকশ সামগ্রী উপলব্ধ করা হয় এটি সহজ জিনিষ সঙ্গে একাধিক প্রোগ্রাম লিখতে করা একবারে যাওয়া. আপনি যখন ভূত প্রোগ্রাম নির্মাণ, আপনি ক্রমাগত করছি থ্রেড এর সাথে কাজ করে. প্রতিটি ভূত স্ক্রিপ্ট, যা একটি কোড ব্লক সঙ্গে যে শুরু "যখন" ধাঁধা পোশাক এক, এর যাবে চিন্তা হিসাবে একটি আলাদা থ্রেড. আসুন একটি সহজ শয়তান এর প্রোগ্রাম এ কিভাবে এই কাজ করে দেখতে চেহারা. এখানে, আমরা একটি মাছ বস্তু, বা পরী পেয়েছেন দুই স্ক্রিপ্টের, করেছি যে উভয় শুরু যখন আমরা সামান্য সবুজ পতাকা বাটন ক্লিক করুন. প্রথম স্ক্রিপ্ট মাছ এর গতি নিয়ন্ত্রণ করে. যখন সবুজ পতাকা ক্লিক না, মাছ স্থাপিত পরার পর্দার বাম দিকে, পর্যায় বলা হয়, সম্মুখ অধিকার. তারপর, নির্দেশাবলী যে চিরকালের জন্য চালানো হবে একটি সেট, যতক্ষণ না আমরা প্রোগ্রাম বন্ধ করুন, মাছ ডানদিকে যাও glides, প্রায় একবছর, বাম দিকে ফিরে যায়, এবং সক্রিয় আবার কাছাকাছি. দ্বিতীয় স্ক্রিপ্ট মাছ এর চিন্তার প্রক্রিয়া নিয়ন্ত্রণ করে. এটা পরিনত হয় যে এই একটি ক্ষুধার্ত মাছ. তাই 3 সেকেন্ডের জন্য অপেক্ষা করার পরেই, মাছ, মনে হয় "আমি ক্ষুধার্ত," একটি চতুর্থ দ্বিতীয় জন্য. এই স্ক্রিপ্টটি এছাড়াও চিরকালের চালায়. এবং হিসাবে আমরা প্রোগ্রাম থেকে দেখতে ক্লিক করে, সবুজ পতাকা, উভয় স্ক্রিপ্ট চালানো প্রদর্শিত একযোগে. মাছ চলে আসে একই সময়ে এবং মনে করে. যেহেতু দরিদ্র মাছ দেখায় তাই ক্ষুধার্ত, যাক এর কিছু যোগ করুন গোলগাল puffs জন্য এটি খেতে যাও. আশা রাখি, তারা জলে ভাঙ্গা হবে না. যখন আমরা একটি দ্বিতীয় পরী মধ্যে যোগ করুন, এছাড়াও আমরা হতে সক্ষম হবেন সংশ্লিষ্ট স্ক্রিপ্ট যে পরী এ যোগ করুন. তাই, অন্য সেট করা আছে করব থ্রেড যে চালানো হবে. যাও থামানো আমাদের প্রোগ্রাম কন্ট্রোলের ব্যবহারকারী যখন ক্ষুধার্ত মাছের খাদ্য পায়, আসুন যে যখনই স্পেস বার আঘাত করা হয়, মঞ্চে গোলগাল puffs জন্য প্রদর্শিত মাছ খেতে যাও. আগে আমরা স্পেস বার আঘাত, আমরা গোলগাল রাখতে চাইবেন puffs লুকানো যাতে মাছ তাদের না দেখতে পারেন. এই কাজের জন্য স্ক্রিপ্টের আমরা কয়েক করতে হবে গোলগাল puffs পরী. প্রথম স্ক্রিপ্ট, সবুজ নিশান, শুধু খাবার লুকাতে হবে. অন্যান্য স্ক্রিপ্ট আমরা লিখিত করেছি ভিন্ন, এই এক না রাখতে হবে চলমান চিরতরে. এবং এটি খুব দ্রুত শেষ শুরু হবে যখন আমরা ডান ক্লিক করুন সবুজ পতাকা বোতাম. পরের স্ক্রিপ্ট আমরা জন্য স্পেস বার হতে অপেক্ষা করতে হবে নির্বাহ করার আগে চাপা. আমরা এর জন্য ব্যবহারকারীর ইনপুট "অপেক্ষা" অথবা "শোনা" অপেক্ষা পোকা বলতে পারেন জন্য একটি ঘটনা. এবং কোড করুন যখন একটি ঘটনা বা গৃহীত হয়েছে শোনা ইভেন্ট হ্যান্ডলিং কোড বলা হয়. আমাদের স্পেস বার হ্যান্ডলার এর উপর গোলগাল puffs প্রদর্শন করা পর্দা যাতে তাদের মাছ খেতে পারেন. এই মুহুর্তে, সবকিছু ভাল খুঁজছেন এর. পরের জিনিস আমরা করার চিন্তা করা কিভাবে পেতে হয় মাছ যে খাবার খেতে যাও আছে বুঝতে পারছি. চলুন মাছ অন্য যে থ্রেড প্রতিনিয়ত যোগ করুন চেক কিনা বা না এটি গোলগাল puffs স্পর্শ এর. আমরা একটি পৃথক থ্রেডটিতে যে উপায় আমরা করতে পারেন যেহেতু এটি করার জন্য খাদ্য জন্য ক্রমাগত পরীক্ষা. অন্যথা, শুধুমাত্র আমরা পর্যায়ক্রমিকভাবে খাদ্য জন্য চেক করতে চাই মধ্যে মধ্যে গ্লাইডিং, প্রায় বাঁক, অপেক্ষা করছে, অথবা চিন্তা. ঠিক আছে. এখন আসুন আমাদের ভূত প্রোগ্রাম চালানো. হিসাবে প্রত্যাশিত, অবিলম্বে খাদ্য এবং hides ক্ষুধার্ত মাছের ফিরে swims এবং ঘোষণা আগে মত. যখন আমরা স্পেস বার আঘাত, গোলগাল puffs দেখিতে পাত্তয়া, এবং ক্ষুধার্ত মাছ whoo বলছেন. তবে অপেক্ষা করুন, যে অদ্ভুত. কিভাবে আসা মাছ এর "আমি ক্ষুধার্ত" চিন্তা ইন্টারাপ্ট অন্যান্য উপাদান? কারণ আমরা কোনো সমন্বয় স্থাপন করা যায় নি এর মধ্যে তিনটি মাছ স্ক্রিপ্ট. প্রত্যেকটি তার নিজস্ব থ্রেডটিতে, চলমান অন্যমনস্ক কি হয় অন্যদের করছেন. চলুন এই আগে আমরা এগিয়ে যেতে ফিক্স. থ্রেডের মধ্যে সমন্বয় একটি আমরা যেহেতু চতুর টাস্ক না হলে প্রতিটি থ্রেড রান উপর স্পষ্ট নিয়ন্ত্রণ বা আছে না চলে না. যাও থেকে এক থ্রেড অন্য একটি বার্তা পাঠান, আমাদের করতে হবে একটি পরিবর্তনশীল যে আমরা, অথবা লিখতে পারেন সেট ব্যবহার এক থ্রেডটিতে, অন্য মধ্যে পড়তে. চলুন শুরু করা যাক একটি পরিবর্তনশীল নামক foodFound যে আমরা সেট করতে পারবেন সত্য যখন মাছ গোলগাল puffs মধ্যে সঞ্চালিত হয়. অবশ্যই ভাল,, আমরা নিশ্চিত যে আমরা এটি সেট করতে চাই প্রথমে মিথ্যা. মাছ এর চিন্তা থ্রেড তারপর, আমরা দেখতে চেক করব যদি মাছ "আমি ক্ষুধার্ত" প্রদর্শন করার আগে করেনি খাদ্য পাওয়া যায় নি বুদ্বুদ চিন্তা. এখন, আবার প্রোগ্রাম, আমরা দেখতে যে মাছ পেতে বিঘ্নিত ক্ষুধা চিন্তা না কখন গোলগাল puffs আউট হয়. আমরা চূড়ান্ত সমস্যা আছে যে গোলগাল puffs সেখানে যাবেন না দূরে মাছ পরে, উদ্ধতি মূল্যউদ্ধৃতি, "eats" তাদের. মাছ স্ক্রিপ্ট থেকে, কোন সহজ উপায় নেই যাও গোলগাল লুকান আছে puffs, তাই গোলগাল puffs একটি বার্তা পাঠাতে হবে নিজেকে লুকানোর পরী. আমরা অন্য পরিবর্তনশীল সঙ্গে এই যেত না যে গোলগাল puffs পরী অ্যাক্সেস, যেমন মাছ ভূত আছে. যাইহোক, যে পরিষ্কার করে উপায় এই ক্ষেত্রে এই কি আছে, যেহেতু পরিবর্তে একটি স্ক্রিপ্ট এর একটি বার্তা পাঠানোর কোথাও নির্বাহ করার মাঝখানে, আমরা পাঠাতে পারেন একটি স্ক্রিপ্ট শুরু অপেক্ষা এর বার্তা. আমরা মাছ না থাকার এই একটি ঘটনা, একটি আমরা করব সম্প্রচার খাওয়া কল. তারপর, আমরা গোলগাল puffs যে অভিলাষ জন্য একটি স্ক্রিপ্ট তৈরি করব এই ইভেন্টের জন্য অপেক্ষা করুন. এই যে এই ছাড়া অনুরূপ স্পেস বার ইভেন্ট, সময়, ব্যবহারকারী সরাসরি এক ইভেন্ট triggering না. এখন আমরা কি আমাদের foodFound পরিবর্তনশীল ফিরে সেট করা হয় যাও, মিথ্যা এবং আমরা এখন অনেক হিসাবে ক্ষুধার্ত মাছ দিতে পারে গোলগাল puffs হিসাবে এটি চায় servings. তাই খুব খারাপ না, ডান? সি, মাল্টিথ্রেডেড প্রোগ্রাম লেখা হয় আরো জটিল, কিন্তু একই মূলসূত্র. যাই হোক, আমি আশা করি আপনি একটি মহান সময় কিছু মজা আছে ভবন ভূত মধ্যে সহগামী প্রোগ্রাম. আমার নাম Nate Hardison. এটি CS50.