সম্পাদনা করুন: সর্বশেষ উইন্ডোজ ফলাফলের সাথে আগস্ট 2017 আপডেট হয়েছে।
আমি আপনাকে প্রস্তাবিত বুস্ট.এফআইওর লেখক হিসাবে পরীক্ষার কোড এবং ফলাফলগুলির লিঙ্কগুলির সাথে একটি উত্তর দিতে যা যা একটি অ্যাসিঙ্ক্রোনাস ফাইল সিস্টেম এবং ফাইল i / o সি ++ লাইব্রেরি প্রয়োগ করে।
প্রথমত, উইন্ডোজে O_APPEND বা সমতুল্য FILE_APPEND_DATA এর অর্থ হল সর্বাধিক ফাইলের পরিধি (ফাইল "দৈর্ঘ্য") এর সামঞ্জস্য লেখকগুলির অধীনে পারমাণবিক । এটি পসিক্স দ্বারা গ্যারান্টিযুক্ত এবং লিনাক্স, ফ্রিবিএসডি, ওএস এক্স এবং উইন্ডোজ সকলেই এটি সঠিকভাবে প্রয়োগ করে। সাম্বা এটিকেও সঠিকভাবে প্রয়োগ করে, ভিএফ-এর আগে এনএফএস এটিতে পারমাণবিকভাবে সংযোজন করার জন্য তারের বিন্যাসের সামর্থ্য না থাকায় দেয়। সুতরাং আপনি যদি নিজের ফাইলটি কেবলমাত্র পরিশিষ্টের সাথে খোলেন তবে সমকালীন লেখাগুলি এনএফএস জড়িত না হলে কোনও বড় ওএসে একে অপরের প্রতি শ্রদ্ধা প্রকাশ করবে না ।
তবে সমবর্তী সার্চ পারমাণবিক আপনার স্বাক্ষরে করতে পারে টুটা লিখেছেন ওএস উপর নির্ভর করে, ফাইলিং সিস্টেম দেখতে, এবং কি পতাকার আপনার সাথে ফাইল খোলা - সর্বাধিক ফাইল ব্যাপ্তি পারমাণবিক হয় বৃদ্ধি, কিন্তু সম্মান সঙ্গে লিখেছেন দৃশ্যমানতা সার্চ হতেও পারে, নাও হতে পারে পরমাণু হতে। পতাকা, ওএস এবং ফাইলিং সিস্টেমের দ্বারা এখানে একটি দ্রুত সংক্ষিপ্তসার রয়েছে:
কোনও O_DIRECT / FILE_FLAG_NO_BUFFERING নেই:
মাইক্রোসফ্ট উইন্ডোজ 10 এনটিএফএস সহ: অ্যাটমিকটি = 1 বাইট আপডেট করুন এবং 10.0.10240 অন্তর্ভুক্ত করে 10.0.14393 থেকে কমপক্ষে 1 এমবি, সম্ভবত অসীম (*)।
Ext4 সহ লিনাক্স 4.2.6: অ্যাটমিকটি আপডেট করুন = 1 বাইট
জেডএফএস সহ ফ্রিবিএসডি 10.2: আপডেট পারমাণবিকতা = কমপক্ষে 1 এমবি, সম্ভবত অসীম (*)
O_DIRECT / FILE_FLAG_NO_BUFFERING:
মাইক্রোসফ্ট উইন্ডোজ 10 এনটিএফএস সহ: অ্যাটমিকটি আপডেট করুন = অবধি 10.0.10240 পর্যন্ত 4096 বাইট পর্যন্ত পৃষ্ঠায় প্রান্তিককরণ থাকলে, অন্যথায় 512 বাইট যদি FILE_FLAG_WRITE_THROUGH বন্ধ থাকে, অন্যথায় 64 বাইট। মনে রাখবেন যে এই পারমাণবিকতাটি সম্ভবত ডিজাইনের পরিবর্তে পিসিআই ডিএমএর একটি বৈশিষ্ট্য 10
Ext4 সহ লিনাক্স 4.2.6: আপডেট পারমাণবিকতা = কমপক্ষে 1Mb, সম্ভবত অসীম (*)। নোট করুন যে ext4 সহ পূর্ববর্তী লিনাক্সগুলি অবশ্যই 4096 বাইটের বেশি ছিল না, এক্সএফএস অবশ্যই কাস্টম লকিং ব্যবহার করত তবে দেখে মনে হচ্ছে সাম্প্রতিক লিনাক্স এটি শেষ করে দিয়েছে।
জেডএফএস সহ ফ্রিবিএসডি 10.2: আপডেট পারমাণবিকতা = কমপক্ষে 1 এমবি, সম্ভবত অসীম (*)
আপনি কাঁচা পরীক্ষামূলক পরীক্ষার ফলাফল https://github.com/ned14/afio/tree/master/program/fs-probe এ দেখতে পারেন । দ্রষ্টব্য, আমরা ছেঁড়া অফসেটগুলি কেবল 512 বাইট গুণকেই পরীক্ষা করি, তাই আমি বলতে পারি না যে 512 বাইট সেক্টরের আংশিক আপডেটটি রিড-মডিফাই-রাইটিং চক্রের সময় ছিঁড়ে যায়।
সুতরাং, ওপি-র প্রশ্নের জবাব দেওয়ার জন্য, ও_এপপেন্ড লেখার ফলে একে অপরের সাথে হস্তক্ষেপ করবে না, তবে ও_এপিপিএএনডি-র সমষ্টি পড়লে সম্ভবত লিনাক্সে এক্সট 4 দিয়ে ছেঁড়া লেখাগুলি দেখা যাবে যদি না O_DIRECT চালু না থাকে, তারপরে আপনার O_APPEND লেখার ক্ষেত্রে খাত আকারের একাধিক হওয়া প্রয়োজন।
(*) "সম্ভবত অসীম" পজিক্স অনুচ্ছেদে এই ধারাগুলি থেকে উদ্ভূত:
নিম্নলিখিত নিয়মিত ফাইল বা প্রতীকী লিঙ্কগুলিতে অপারেট করার সময় নিচের সমস্ত ফাংশন একে অপরের প্রতি সম্মানের সাথে পরমাণু হতে হবে ... [অনেকগুলি ফাংশন] ... পড়ুন () ... লিখুন (লিখুন) ) ... যদি দুটি থ্রেড প্রতিটি কল করে এই ফাংশনগুলির মধ্যে একটি, প্রতিটি কল হয় অন্য কলটির নির্দিষ্ট প্রভাবগুলি দেখতে পাবে, বা সেগুলির কোনওটিই নয়। [উৎস]
এবং
লেখাগুলি অন্য পাঠ ও লেখার প্রতি শ্রদ্ধাশীল করে সিরিয়াল করা যেতে পারে। যদি ফাইলের ডেটা পড়ার () কোনও উপাত্তের লেখার () পরে (কোনও উপায়ে) প্রমাণিত হতে পারে, তবে অবশ্যই কলটি বিভিন্ন প্রক্রিয়া দ্বারা করা হলেও, সেই রাইটটি () প্রতিফলিত করতে হবে। [উৎস]
তবে বিপরীতভাবে:
POSIX.1-2-2008 এর এই ভলিউম একাধিক প্রক্রিয়া থেকে কোনও ফাইলকে সমবর্তী লেখার আচরণ নির্দিষ্ট করে না। অ্যাপ্লিকেশনগুলিতে একযোগে নিয়ন্ত্রণের কিছু ফর্ম ব্যবহার করা উচিত। [উৎস]
আপনি এই উত্তরে এর অর্থ সম্পর্কে আরও পড়তে পারেন
fsync(2)
যতটা গ্যারান্টি দেয় ততটাsync(2)
দেয় এবং পারফরম্যান্সে যতটা বড় হাতুড়ি প্রভাব পড়ে তার ততটা নেই।