থ্রেডিং বোঝার জন্য আমাকে কেউ লেখার জন্য কোনও প্রকল্প প্রস্তাব দিতে পারে?


13

আমি বর্তমানে থ্রেডিংয়ের বেশ নড়বড়ে বোঝাপড়া সহ একটি সি # বিকাশকারী।

এই দুটি লিঙ্কই অন্য পোস্টে পরামর্শ দেওয়া হয়েছে:

http://www.yoda.arachsys.com/csharp/threads/

http://www.albahari.com/threading/

আমার কি বেসিকগুলিতে ফিরে যেতে হবে এবং সম্ভবত এই বিষয়টিতে কিছু কম্পিউটার বিজ্ঞানের পাঠ্য তাকানো উচিত?

আমি সত্যিই অনুভব করি যে আমি যদি সি # লাইব্রেরিগুলিতে ঝাঁপিয়ে পড়ি এবং ব্যবহার করি তবে সত্যিকার অর্থে আমার জ্ঞানের দৃ foundation় ভিত্তি তৈরি হবে না। আমি মনে করি কম সায়েন্ট স্টুডেন্টের মতো স্ক্র্যাচ থেকে আমার এই বিষয়টি শিখতে হবে, তারপরে সি # লাইব্রেরি ব্যবহার করুন।

যে কেউ থ্রেডিং শেখার একটি পদ্ধতির পরামর্শ দিতে পারে, কিছু লিঙ্ক এবং বা প্রকল্পের ধারণা?

আগাম ধন্যবাদ!

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


আমি জানি না এটি সাহায্য করে কিনা তবে এটি একটি সাধারণ টিউটোরিয়াল যা আমি ভিবি.নেটে কিছুক্ষণ আগে লিখেছিলাম যা থ্রেডিংয়ের প্রাথমিক ধারণাটি ব্যাখ্যা করে। আপনার এটি খুব সহজেই সি # তে রূপান্তর করতে সক্ষম হওয়া উচিত। chrishaas.wordpress.com/2009/06/25/…
ক্রিস হাশ

আমি দৃ mult়ভাবে একটি বহুবিবাহিত জিইউআই লিখার পরামর্শ দিয়েছি যাতে এই থ্রেডগুলি দিয়ে কী করা সম্ভব এবং তার বুদ্ধিমান থাকতে পারে তার সীমাটি শেখাবে। তবে এটি গঠনমূলক হবে না, তাই আমি এটি একটি মন্তব্য হিসাবে নয়, একটি উত্তর হিসাবে চালিয়ে যাব ... :-)
ডোনাল ফেলো

উত্তর:


3

একটি বহু-থ্রেডযুক্ত ওয়েব সার্ভার লিখুন। আপনি একটি টন শিখবেন । এবং না শুধুমাত্র থ্রেডিং সম্পর্কে।


4

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

থ্রেডিং / কাঁটাচামচ সম্পর্কে আপনার যে গুরুত্বপূর্ণ বিষয়গুলি বোঝা উচিত সেগুলি সম্পর্কে এখানে একটি রুনডাউন রয়েছে the তাদের একই সময়ে অ্যাক্সেস করা - খারাপ জিনিসগুলি ঘটবে)

এই ক্লাসিক সমস্যাটির জন্য এখানে একটি উইকি নিবন্ধ: http://en.wikedia.org/wiki/Producer-consumer_problem

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


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

2

সর্বোত্তম সমান্তরাল সমস্যাগুলির মধ্যে একটি বেছে নিন। সুপার লিনিয়ার স্পিডআপ সহ একটি বাছাই করা আপনার কাছে আরও আকর্ষণীয় মনে হতে পারে।

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


0

আমি মনে করি না পাঠ্যপুস্তকটি পরবর্তী সেরা পদক্ষেপ। একটি প্রকল্প যাওয়ার উপায় the এটি এমন কিছু হওয়া উচিত যা সম্পর্কে আপনি উত্সাহিত।

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

সুতরাং, স্ক্র্যাপ করতে এবং হ্যাকিং শুরু করার জন্য কিছু তথ্য বের করুন। কিছু চালিয়ে যেতে আপনার বেশি সময় লাগবে না, এটি একটি মৃদু পরিচয় হবে।


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

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

0

মডেল একটি সাধারণ স্পাই বনাম স্পাই অ্যাপ।

প্রতিটি গুপ্তচর পৃথক সুতায় চালিত হয়।

প্রতিটি গুপ্তচর অন্য গুপ্তচরকে ক্ষতি করতে পারে তবে সরাসরি নয়।

প্রতিটি গুপ্তচর অন্য স্পাই থেকে মূল্যবান সংস্থান চুরি করতে পারে, তবে সরাসরি নয়।

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


0

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

এগুলি ছাড়াও, এই বাণিজ্যিক প্রশিক্ষণ সাইটে এই 2.5 ঘন্টা ভিডিও কোর্স রয়েছে তবে আপনি একটি বিনামূল্যে পরীক্ষা পেতে পারেন (অবশ্যই ক্রেডিট কার্ডের ডেটা ছেড়ে যেতে হবে; সুতরাং সাবস্ক্রাইব করতে ভুলবেন না)

http://www.pluralsight-training.net/microsoft/olt/Course/Toc.aspx?n=clr-threading


0

আমার কি বেসিকগুলিতে ফিরে যেতে হবে এবং সম্ভবত এই বিষয়টিতে কিছু কম্পিউটার বিজ্ঞানের পাঠ্য তাকানো উচিত?

এটি সর্বদা একটি ভাল পছন্দ এবং আমি আপনাকে সুপারিশ করব যে থ্রেডিংয়ের সাথে নিজেকে পরিচিত করার জন্য আপনি একটি ভাল থ্রেডিং বইটি বেছে নিন। আমি জাভাতে মাল্টিথ্রেডিং শিখেছি এবং জ্ঞানটি খুব সহজেই সি # তে অনুবাদ করে।

আপনি যদি ব্যবহারিক উদাহরণ চান তবে আমি আপনাকে খাওয়ার দার্শনিক সমস্যার চেষ্টা করার পরামর্শ দিচ্ছি ।

মাল্টিথ্রিডিংয়ের সময় আপনি কয়েকটি জিনিস শিখতে হবে:

  1. সিঙ্ক্রোনাইজ করার বিভিন্ন উপায় (সেমফোর, মিটেক্স ইত্যাদি))
  2. পারমাণবিক অপারেশনস (সি # তে এটি আন্তঃলোকের মাধ্যমে অপারেশনের জন্য সম্পন্ন হয় যা ডিফল্টরূপে পরমাণু নয়)।
  3. লক-ফ্রি সমকালীন প্রোগ্রামিং।
  4. ওয়েট-ফ্রি সমকালীন প্রোগ্রামিং।
  5. থ্রেডস, থ্রেডপুলস, ব্যাকগ্রাউন্ড ওয়ার্কার্স ইত্যাদি

এই মুহুর্তে আমি অন্য জিনিসগুলি ভাবতে পারি না। আলবাহারী টিউটোরিয়ালটি দেখতে বেশ ভাল লাগছে!


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

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

@ লিরিক: অবশ্যই, ডাইনিং দার্শনিকদের সমস্যাটি বুঝুন। তবে আমি এটি বাস্তবায়ন করব না। ভুল কোড লেখা ভাঙ্গা শক্ত অভ্যাসে পরিণত হতে পারে।
বেন ভয়েগট

@ বেন ভয়েগ্ট, দুঃখিত, আমি অবশ্যই কিছু মিস করছি: ডাইনিং দার্শনিকদের সমস্যার মূল বিষয় হল এমন একটি প্রোগ্রাম লিখুন যা অচলাবস্থা না করে , তবে কীভাবে ডিপিপি সমাধানের জন্য "ভুল কোড" রচনার প্রয়োজন হবে?
কিরিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.