fopen,fread与open,read分别属于两套接口,open,read更偏底层属于系统调用
在项目中用到了fopen,fread,fseek组合使用时,存在线程安全问题,需要加锁,也就是
lock() //加锁
fopen
fseek
fread
fclose
unlock() //解锁
原因是每个线程fopen时都会有一条独立的IO流,但是这些IO流在底层缓存时存在线程安全的问题
相比起来open,read接口组合使用时,就不存在线程安全的问题,已经测试过,不需要加锁