উইন্ডোজ স্বয়ংক্রিয়, বাধ্যতামূলক ফাইল লকিংয়ের ডিফল্ট। ইউনিক্স ম্যানুয়াল, সমবায় ফাইল লকিংয়ের জন্য ডিফল্ট। উভয় ক্ষেত্রেই, খেলাপিগুলি ডিফল্টগুলিকে ওভাররেড করা যায় তবে উভয় ক্ষেত্রেই সাধারণত হয় না।
প্রচুর পুরানো উইন্ডোজ কোড fopen
নেটিভ এপিআই (যেমন ফাংশন) এর পরিবর্তে সি / সি ++ এপিআই (যেমন ফাংশন CreateFile
) ব্যবহার করে। সি / সি ++ এপিআই আপনাকে বাধ্যতামূলক লকিং কীভাবে কাজ করবে তা নির্দিষ্ট করার কোনও উপায় দেয় না, তাই আপনি ডিফল্ট পান। ডিফল্ট "শেয়ার মোড" "বিরোধী" ক্রিয়াকলাপ নিষিদ্ধ করে। আপনি যদি লেখার জন্য কোনও ফাইল খোলেন, লেখাগুলি দ্বন্দ্ব হিসাবে ধরে নেওয়া হবে, এমনকি আপনি যদি কখনও ফাইলটিতে লিখেন না। নাম পরিবর্তন করার জন্য।
এবং, এটি এখানে আরও খারাপ হয়। পঠন বা লেখার জন্য উন্মুক্তকরণ ব্যতীত, সি / সি ++ এপিআই ফাইলটি আপনার কী করতে চান তা নির্দিষ্ট করে দেওয়ার কোনও উপায় সরবরাহ করে না। সুতরাং এপিআইকে ধরে নিতে হবে যে আপনি কোনও আইনী ক্রিয়াকলাপ চালিয়ে যাচ্ছেন। যেহেতু লকিং বাধ্যতামূলক, একটি open
যে দেয় একটি পরস্পরবিরোধী অপারেশন প্রত্যাখ্যান করা হবে, এমনকি যদি কোড পরস্পরবিরোধী ক্রিয়াকলাপটি সম্পাদন করার উদ্দেশ্যে কখনো কিন্তু শুধু আরেকটি উদ্দেশ্যে ফাইলটি খোলার হয়।
সুতরাং কোড যদি সি / সি ++ এপিআই ব্যবহার করে, বা এই সমস্যাগুলি সম্পর্কে বিশেষভাবে চিন্তা না করে নেটিভ এপিআই ব্যবহার করে তবে তারা যে ফাইলগুলি খোলেন তার সর্বাধিক সংক্রমণের বাধা দেয় এবং যতটা সম্ভব অপারেশন না করে ফাইল খুলতে অক্ষম হবে এটি খোলার পরে নিরবিচ্ছিন্নভাবে এটি সম্পাদন করতে পারে।
আমার মতে, উইন্ডোজ পদ্ধতিটি ইউনিক্স পদ্ধতির চেয়ে অনেক বেশি ভাল কাজ করবে যদি প্রতিটি প্রোগ্রাম তার ভাগের পদ্ধতিগুলি ও বিজ্ঞতার সাথে এবং বুদ্ধিমানের সাথে পরিচালিত ব্যর্থতার কেসগুলি বেছে নেয়। কোডগুলি যদি এই বিষয়গুলি সম্পর্কে চিন্তা করতে বিরক্ত না করে তবে UNIX পদ্ধতিটি আরও ভাল কাজ করে। দুর্ভাগ্যক্রমে, বেসিক সি / সি ++ এপিআই উইন্ডোজ ফাইল এপিআই-তে এমনভাবে মানচিত্র তৈরি করে না যা ভাগ করে নেওয়ার পদ্ধতিগুলিকে পরিচালনা করে এবং বিবাদমানগুলি ভালভাবে খোলে। সুতরাং নেট ফলাফলটি কিছুটা অগোছালো।