....loff_t pos = file_pos_read(f.file);ret = vfs_read(f.file,buf,count,&pos);file_pos_write(f.file,pos);fdput(f);...`
我的问题是:
锁定在哪里?我想象的是:
....lock(f.file); // <-- lock file structloff_t pos = file_pos_read(f.file);ret = vfs_read(f.file,pos);fdput(f);unlock(f.file); // <-- unlock file struct...
如果多个线程同时尝试读/写,它们可以在相同的偏移量下读/写?
如果我的理解是正确的,那个linux不使用任何锁定机制来保护偏移量,这个POSIX是否兼容?
我确实看过POSIX规范,但没有发现这个案例.
解决方法 linux不使用任何锁定机制来保护对文件的多线程写入.您必须使用自己的互斥锁来保护您的文件.
总结以上是内存溢出为你收集整理的并发访问文件linux全部内容,希望文章能够帮你解决并发访问文件linux所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)