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(-);
}
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", );
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 ;
}

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

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

最新文章

  1. 你必须知道的Javascript 系列
  2. Highcharts使用教程(2):设置选项
  3. ruby 学习笔记 1
  4. 《C与指针》第八章练习
  5. 制作大漠字库并用python调用大漠工具方法来识别文字
  6. re-id 资料集
  7. 设置transparent是否多此一举
  8. linux进程模型总结
  9. FileZilla 425 Can&#39;t open data connection
  10. [RxJS] Reactive Programming - New requests from refresh clicks -- merge()
  11. Log4Net 的简要配置
  12. 国际C语言混乱代码大赛代码赏析(一)【转】
  13. 【Howie玩docker】-docker安装
  14. BZOJ 1642: [Usaco2007 Nov]Milking Time 挤奶时间( dp )
  15. cocos2d触摸事件处理机制(2.x和3.x变化)
  16. 【Java入门提高篇】Day9 Java内部类——静态内部类
  17. OpenStack控制节点上搭建Q版keystone服务(step3)
  18. Full Regularization Path for Sparse Principal Component Analysis
  19. u-boot(二)makefile
  20. H 模拟水题

热门文章

  1. [Clr via C#读书笔记]Cp2生成打包部署和管理应用程序和类型
  2. WCF服务库创建-20140919
  3. Redis 错误摘记篇
  4. Python—集合(在我的世界,你就是唯一)
  5. 团队作业week9 情景测试
  6. dataTables工作总结
  7. 2019寒假训练营寒假作业(二) MOOC的网络空间安全概论笔记部分
  8. Swift-闭包理解
  9. request.getRequestDispatcher不能实现页面跳转的原因
  10. C# 创建Excel或需不安装Office