ওপেনজিএল রেন্ডারারের উপর ভিত্তি করে একটি গেমের প্রসঙ্গে কথা বলা:
ধরে নেওয়া যাক দুটি থ্রেড রয়েছে:
গেম অবজেক্টগুলিতে গেমের লজিক এবং ফিজিক্স ইত্যাদি আপডেট করে
গেমের অবজেক্টগুলিতে ডেটার ভিত্তিতে প্রতিটি গেমের অবজেক্টের জন্য ওপেনজিএল কল করে (যে থ্রেডটি 1 আপডেট করে চলেছে)
গেমের বর্তমান অবস্থায় প্রতিটি গেমের অবজেক্টের দুটি অনুলিপি না থাকলে থ্রেড 1 থামাতে হবে যখন থ্রেড 2 ড্র কলগুলি করেছে অন্যথায় গেম অবজেক্টগুলি সেই অবজেক্টের জন্য একটি ড্র কলের মাঝখানে আপডেট হবে, যা অবাঞ্ছিত!
তবে থ্রেড 2 থেকে নিরাপদে কল করতে থ্রেড 1 বন্ধ করা মাল্টিথ্রেডিং / কনক্যুরেন্সির পুরো উদ্দেশ্যকে হত্যা করে
শত বা হাজার বা সিঙ্ক অবজেক্টস / বেড়া ব্যবহার করা ছাড়াও এর জন্য কি আরও ভাল পদ্ধতির যাতে মাল্টিকোর আর্কিটেকচারটি পারফরম্যান্সের জন্য কাজে লাগানো যায়?
আমি জানি যে আমি এখনও টেক্সচার লোড করার জন্য মাল্টিথ্রেডিং এবং শ্যাডারগুলি সংকলনের জন্য ব্যবহার করতে পারি যা এখনও বর্তমান গেমের অঙ্গ হতে পারে তবে ড্র এবং আপডেটের সাথে দ্বন্দ্ব না ঘটিয়ে আমি কীভাবে সক্রিয় / দৃশ্যমান বস্তুর জন্য এটি করব?
আমি যদি প্রতিটি গেমের অবজেক্টে পৃথক সিঙ্ক লক ব্যবহার করি? পুরো আপডেট / আঁকার চক্রের পরিবর্তে কোনও থ্রেড কেবলমাত্র একটি বস্তুর (আদর্শ কেস) ব্লক করবে! তবে কীভাবে ব্যয় হচ্ছে প্রতিটি বস্তুর উপর লক নেওয়া (গেমটিতে হাজার জিনিস থাকতে পারে)?