版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
首先我们先来了解一下系统调用的概念和CPU和RAM
为什么先讲这些呢,因为read和write函数如果要从一个磁盘里读信息,或者写一个信息到磁盘的文件都是会经过RAM的,一般再
RAM上停留的时间为5-7分钟,如果再这个时间段里,服务器因为负载过高(宕机了)(这个现象是非常多见的:比如再八卦一波:在鹿晗宣布恋情的时候新浪的服务器3-4天了宕机了好多次)。所以再这信息停留再 RAM的时间段里如果宕机,即使read和write返回成功但是,也会数据丢失(因为还在RAM)上。
那么我门怎么来解决这个问题呢。嘻嘻有办法的
再#include <unistd.h>头文件里提供了两个函数我之说其中最常用的一个
int fsync(int fd); // 这个同步的函数,而且会等待如果同步成功返回的值
这里要声明一点io的时候尽量读取一片数据调用一次这个函数,你读取一个就调用一次的话,效率是极低的。举个例子
小时候再农村,奶奶(cpu)用水从水缸(RAM)里面取,水缸里的水是从水井(磁盘)挑的,你用一次用一碗水就去就从水井挑一碗水到水缸里,效率怎么会高呢???您觉得是吧,点播关注,后面还有干货