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