当前位置: 首页 > news >正文

fopen函数在linux,Fopen()是Linux中的一个线程安全函数吗?

下面是一个线程安全的打开文件写你可以打开多个文件,它只是顺序写入文件。 我认为下面的代码可以用时间同步来依然优化,飞出未使用的文件,以保持高速缓存

任何建议,欢迎

class OpenFile

{

string fileName;

static map> fmap;

bool flag;

public :

OpenFile(string file) : fileName(file) {

try {

if(checkFile(file))

{

flag = false;

fmap.emplace(file, make_unique());

}

else

{

flag = true;

}

}

catch(string str)

{

cout << str << endl;

}

}

void writeToFile(const string& str) const

{

if (flag)

{

lock_guard lck(*fmap.find(fileName)->second);

ofstream ofile(fileName, ios::app);

ofile << "Writing to the file " << str << endl;

ofile.close();

}

else

{

ofstream ofile(fileName, ios::app);

ofile << "Writing to the file " << str << endl;

ofile.close();

}

}

string ReadFile() const

{

string line;

if (flag)

{

lock_guard lck(*fmap.find(fileName)->second);

ifstream ifile(fileName, ios::in);

getline(ifile, line);

ifile.close();

}

else

{

ifstream ifile(fileName, ios::in);

getline(ifile, line);

ifile.close();

}

return line;

}

OpenFile() = delete;

OpenFile& operator=(const OpenFile& o) = delete;

static bool checkFile(string& fname);

};

bool OpenFile::checkFile(string& fname)

{

if (fmap.find(fname)==fmap.end())

{

return true;

}

else

return false;

}

相关文章:

  • linux vnc登录日志,CentOS安装使用VNC进行远程桌面登录
  • 鸟哥linux视频教程密码,[鸟哥linux视频教程整理]04_01_Linux用户管理命令详解
  • linux memcpy 地址对齐,在memcpy中对齐源地址和目标地址
  • 红帽企业级Linux.As版,晋级Linux中的默认JDK的版本
  • linux xen 参数配置,XEN linux虚拟机配置实例
  • linux cpu占用分析,Linux下CPU占用率高分析方法
  • linux信号处理响应异步事件,Linux并发(异步信号)
  • redis 3.0.0 linux下载,Redis可视化管理软件RedisPlus 3.0.0下载,优化了性能及交互体验...
  • c语言阶乘 ii多测试,C语言经典题目:求阶乘n!=n*(n-1)*...*1,阶乘和s=1!+(2)!+(3)!+...+n!...
  • 利用c语言实现几何图形旋转,[平顶山学院高等数学C语言试题.doc
  • linux子系统adb,[ubuntu] win10中linux子系统增加adb调试功能
  • android 媒体按钮,如何使用新的MediaSession类在Android 5.x上接收媒体按钮?
  • android按钮图,android-UI组件实例大全(三)------按钮Button与图片按钮ImageButton
  • android jmdns,jmdns.jar 通信
  • 锁定当前屏幕触摸android,Android解锁屏幕,然后重新锁定屏幕(Nook简单触摸)
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【刷算法】求1+2+3+...+n
  • angular2 简述
  • CentOS7 安装JDK
  • dva中组件的懒加载
  • ECMAScript入门(七)--Module语法
  • fetch 从初识到应用
  • Invalidate和postInvalidate的区别
  • JavaScript异步流程控制的前世今生
  • Redis在Web项目中的应用与实践
  • SAP云平台里Global Account和Sub Account的关系
  • SpingCloudBus整合RabbitMQ
  • Sublime text 3 3103 注册码
  • TypeScript迭代器
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 从tcpdump抓包看TCP/IP协议
  • 对象引论
  • 官方解决所有 npm 全局安装权限问题
  • 人脸识别最新开发经验demo
  • 如何实现 font-size 的响应式
  • 收藏好这篇,别再只说“数据劫持”了
  • 微信开源mars源码分析1—上层samples分析
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 详解NodeJs流之一
  • 消息队列系列二(IOT中消息队列的应用)
  • 小程序 setData 学问多
  • 再谈express与koa的对比
  • 字符串匹配基础上
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • ###项目技术发展史
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (ros//EnvironmentVariables)ros环境变量