boost中可以用boost::interprocess::file_lock类对文件进行加锁和解锁操作。

  

#include <fstream>
#include <iostream>
#include <boost/interprocess/sync/file_lock.hpp>
#include <cstdlib>int main()
{ using namespace boost::interprocess; std::string fileName("test"); std::fstream file;file.open(fileName.c_str(), std::ios::out | std::ios::binary | std::ios::trunc); if (!file.is_open() || file.bad()) {   std::cout << "Open failed" << std::endl; exit(-1); }std::cout << "Process 1 open file" << std::endl;try { file_lock f_lock(fileName.c_str());f_lock.lock();std::cout << "Locked in Process 1" << std::endl;file.write("Process 1", 9); file.flush(); f_lock.unlock();std::cout << "Unlocked from Process 1" << std::endl;} catch (interprocess_exception& e) { std::cout << e.what( ) << std::endl;}file.close();return 0;
}

  为了避免作用域退出时,忘了解锁引发错误,可使用boost::interprocess::lock_guard。

lock_guard<file_lock>  guard(lock);
{// ....
}

转载于:https://www.cnblogs.com/taiyang-li/p/5949101.html

boost文件锁的使用相关推荐

  1. boost官方文档同步机制Synchronization mechanisms overview

    参考链接 官方文档 Synchronization mechanisms overview Named And Anonymous Synchronization Mechanisms Types O ...

  2. 使用 Boost 的 IPC 和 MPI 库进行并发编程

    使用非常流行的 Boost 库进行并发编程非常有意思.Boost 有几个用于并发编程领域的库:Interprocess (IPC) 库用于实现共享内存.内存映射的 I/O 和消息队列:Thread 库 ...

  3. 读《Boost程序库完全开发指南》

    读<Boost程序库完全开发指南> 2011-05-18 20:47:19|  分类: 读书|举报|字号 订阅 C++确实很复杂,神一样的0x不知道能否使C++变得纯粹和干爽? boost ...

  4. 《Boost程序完全开发指南》

    1.3开发环境 由于Boost大量使用了C++高级特性(如模板偏特化.ADL),因此不是所有的编译器都 能够很好地支持Boost. 在VC集成环境中使用嵌入工程编译的方式需要定义宏BOOST_ALL_ ...

  5. C/C++ 开发 boost 库参考手册整理(2) 【学习笔记】

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

  6. 最新超详细C++经典Boost库介绍

    Boost库 Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发.维护.Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能. 目录 Boost库 ...

  7. Linux下安装 boost 库

    1. 先去官网下载压缩包: https://www.boost.org/ 2. 解压后cd 进入根目录,然后执行: ./bootstrap.sh 3. 安装(时间会很长): ./b2 install ...

  8. Mysql依赖库Boost的源码安装,linux下boost库的安装

    boost'准标准库'安装过程. 安装的是boost_1_60_0. (1)首先去下载最新的boost代码包,网址www.boost.org. (2)进入到自己的目录,解压: bzip2 -d boo ...

  9. 函数指针amp;绑定: boost::functoin/std::function/bind

    see link: https://isocpp.org/wiki/faq/pointers-to-members function vs template: http://stackoverflow ...

最新文章

  1. R语言可视化:散点图、散点图和折线图(line charts)、3D散点图、旋转3D散点图、气泡图、corrgram包可视化相关性矩阵、马赛克图( Mosaic plots)、hexbin、密度图
  2. 深度学习光环背后,机器学习的一些新进展!!!
  3. 自动驾驶汽车的未来,“锂电池先驱”:需要更强劲的电池
  4. Bottle源码阅读(3) HeaderDict
  5. ubuntu shell实现99乘法表
  6. django2.2 连接redis集群
  7. c++ primer 5th 练习11.9自己编写的答案
  8. 一个简单的完成端口(服务端/客户端)类
  9. 看看webpack打包优化
  10. mysql 存储过程 获取错误信息 继续执行
  11. 二分查找 python实现
  12. 安装Ubuntu前三件重要的事情
  13. 10分钟入门Shell脚本编程
  14. PostMan中文参数乱码 row模式传参 Content-Type 中文乱码
  15. 遇到电脑任务栏卡死怎么办
  16. 工业制造中的大数据分析应用_工业大数据分析方案-美林数据
  17. 全网史上最全的AR学习开发资源汇总(转载他人整理作品,供参考)
  18. 汉诺塔模拟器java
  19. 本地测试dubbo远程调用找不到provider
  20. YOLOv3 物体识别显示中文标签

热门文章

  1. regrex pattern
  2. Python socket UDP
  3. 朴素贝叶斯(naive Bayes) 二
  4. C语言 指针与结构体
  5. 阿里分布式数据库服务实践
  6. VMware vCenter Server 的内部版本号和版本 (2143838)
  7. Spring MVC学习总结(12)——Spring MVC集成Swagger时报错{schemaValidationMessages:[
  8. Java基础学习总结(43)——Java8 Lambda揭秘
  9. ligertoolbar 动态加载按钮_Axure利用动态面板实现环形加载进度条
  10. Excel的html转换成unicode,EXCEL表格中把汉字转换成unicode编码