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