Seperti yang saya mengerti, ketika file sedang ditulis, proses menulis ke file mendapatkan kunci eksklusif. Jadi proses lain tidak dapat mengakses file ini untuk dibaca.
Dengan pengetahuan di atas, saya tidak dapat memahami bagaimana saya dapat memutar video di media player, ketika browser masih mengunduhnya.
Jawaban:
Pemahaman Anda salah. Beberapa proses Linux dapat menulis ke file yang sama sekaligus (dan apa yang terjadi kemudian mungkin tidak ditentukan, kecuali ketika proses menimpa segmen yang berbeda dari file itu). Dan beberapa proses Linux lainnya (misalnya browser Anda) dapat membaca file yang ditulis untuk .
Anda dapat mengadopsi konvensi untuk menghindari itu . Misalnya, Anda dapat menggunakan penguncian file advisory (mengadopsi konvensi bahwa setiap program yang relevan harus melakukan itu), misalnya dengan flock (2) , lockf (3) , dll. Tapi itu tidak akan melarang proses lain (tidak mengikuti konvensi Anda) untuk mengakses (atau bahkan menulis ke) file itu. Anda dapat menggunakan mesin izin (mis. Dengan mendedikasikan pengguna sistem untuk program setuid Anda ).
Lihat juga jawaban ini & itu pada StackOverflow (beberapa dari mereka menyebutkan mekanisme penguncian khusus Linux yang sudah tidak berlaku lagi ). Baca tentang properti ACID , pertimbangkan untuk menggunakan beberapa database ( sqlite , PostGreSQL , MongoDB , dll ...) atau beberapa file yang diindeks ( gdbm ).
Saya tidak tahu Windows, tetapi mendengar desas-desus bahwa itu tidak memungkinkan akses bersamaan atau menulis ke file yang sama.
sumber
File biasanya tidak dikunci - unix file locking . Ini juga cukup umum untuk memiliki banyak pembaca file tetapi hanya satu penulis. Masalah hanya terjadi ketika Anda ingin memiliki banyak penulis.
Juga, sebagian besar format file video (dan terutama di web) dapat di-streamable, yang berarti Anda tidak perlu memiliki seluruh video untuk memutarnya.
sumber
OS Unix tidak menggunakan penguncian wajib (Gnu / Linux adalah Unix, contoh lain adalah UNIX, BSD, Mac OSX). Mengunci seperti dihindari sedapat mungkin.
Beberapa OS lain menggunakan penguncian wajib setiap saat (Terutama OS Windows milik Microsoft). Ini akan menghentikan Anda bermain sampai sepenuhnya diunduh, itu juga akan menghentikan Anda mengubah nama file atau direktori yang terbuka (ada aplikasi yang masuk). Tetapi pada Unix tidak apa-apa. Jika suatu aplikasi perlu dikunci, ia dapat menggunakannya. Tetapi tidak secara normal.
sumber