并发文件写入

2023-11-26

如何写入可由多个源(可能以并发方式)访问的文本文件,确保不会丢失写入操作?

例如,如果两个不同的进程在同一时刻写入文件,这可能会导致问题。简单的解决方案(不是很快也不是很优雅)是在开始进程时锁定文件(创建 .lock 文件或类似文件)并在写入完成时释放它(删除锁)。

当开始写入时,我会检查.lock文件是否存在并延迟写入直到文件被释放。

对于这种情况,建议遵循什么模式?

Thanks

EDIT我的意思是进程,比如来自不同客户端、不同用户等的不同程序,而不是同一程序中的线程


考虑使用简单的数据库。您将相对容易地获得所有这些内置安全性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

并发文件写入 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • Java:尝试编译 Hadoop 程序时未找到 com.sun.tools.javac.Main

    当我尝试使用此命令在 Hadoop 中编译程序时 bin hadoop com sun tools javac Main WordCounter java 从 Hadoop 文件夹中 它说 Error Could not find or l
  • 在 UIPopoverController 的页脚中使用 UISegmentedControl

    在我的 iPad 应用程序取景器中 iTunes 链接 我正在尝试重新创建 UISegmentedControl 的外观 如 Keynote 的 内置 弹出窗口的页脚中所示 iPad HIG 建议使用底部对齐的 UIToolbar 但外观不
  • 复选框检查事件监听器

    最近我一直在使用 Chrome 插件 API 我希望开发一个插件 这将使我管理网站的生活变得更轻松 现在我想做的是在选中某个复选框时触发一个事件 由于这个网站不属于我 我无法更改代码 因此我使用 Chrome API 主要问题之一是没有 I
  • 从 python 数据帧的列构造二分图

    我有一个包含三列的数据框 data subdomain data domain data IP 我想为子域的每个元素构建一个二分图 对应同一个域 权重为它出现的次数 对应 例如我的数据可能是 subdomain domain IP test
  • TransferRequestHandler 和 BeginRequest 的性能问题

    我已经开始使用 New Relic 来监控性能http alternativeto net那是一个相当大的网站 我注意到的是 他们报告为 TransferRequestHandler 的方法花费了大量时间 当我深入研究它时 我发现实际上是
  • 二元炸弹 - 第 4 阶段

    我很难追踪以下二进制炸弹的汇编代码 学校的一项作业 其中必须拆除炸弹 该炸弹包含 6 个阶段 所有阶段都有 1 个正确的输入才能进入下一阶段 我目前处于 Phase 4 它有一个名为 func4 的递归函数 我已经确定输入是 d d 它是两
  • 如何将文件传递到阻塞上游作业的下游作业?

    我想要完成的是签出代码develop分支 将其合并到master分支 建立app war 运行测试 如果测试成功则推送到master branch 测试应该在需要的单独作业中运行app war 我当前的设置如下 Job Main结帐自dev
  • 如何多次运行 php 单元并连接覆盖率报告?

    我测试的代码充满了最终静态类 虽然我们无法重构它以进行更好的测试 但我有一个中间解决方案 可以在其自己的进程上运行几个小测试 一切正常 但我没有收到覆盖报告 因为其中一个覆盖了另一个 我目前正在 clover 中生成报告 但我对其他报告非常
  • 如何列出接口类型中的方法名称?

    例如 type FooService interface Foo1 x int int Foo2 x string string 我想做的是获取列表 Foo1 Foo2 使用运行时反射 尝试这个 t reflect TypeOf FooSe
  • Flutter 切换到 Tab 重新加载 Widget 并运行 FutureBuilder

    问题 我有 2 个使用默认选项卡控制器的选项卡 如下所示 Widget build BuildContext context return DefaultTabController length 2 child Scaffold drawe
  • 根据一列的值更新另一列的值

    我有一个名为 Vendor 的表 在该表中我有一个名为 AccountTerms 的列 它仅显示一个值 即 0 1 2 3 等 我还有一个我想使用的专栏 ulARAgeing 以反映该值的含义 例如 0 Current 1 30 Days
  • 错误:使用 SQLDF 没有此类列

    下面是脚本 gt library sqldf gt turnover read csv turnover csv gt names turnover 1 Report Date PersID Status DOB 5 Age Tenure
  • 如何用seaborn拟合泊松分布?

    我尝试将数据拟合为泊松分布 import seaborn as sns import scipy stats as stats sns distplot x kde False fit stats poisson 但我收到这个错误 Attr
  • 如何更新应用程序?

    互联网上似乎没有太多用于更新 Android 应用程序的资源 那么 我需要做的就是更改应用程序的 build gradle 文件中的版本号和名称吗 versionCode 2 versionName 1 0 1 这就是全部 现在我只需要制作
  • 即使一项检查失败如何继续执行

    我正在尝试访问不同的网址并使用 matchImageSnapshot 将屏幕截图与基线图像进行比较 这里的问题是当我的一个 url 因 matchimagesnapshot 失败时 它不会继续到下一个 URL 注意 我尝试使用变量 env
  • 获取插入后生成的id

    我正在 Android 上使用 SQLite 我想知道获取我插入的行的生成 id 的最佳方法 我认为解决方案在包含后进行搜索 但它看起来不是最好的方法 The insert方法返回id刚刚插入的行或 1如果插入过程中出现错误 long id
  • 滚动到带有标题的 Xamarin Forms ListView 的开头

    我在 Xamarin Forms 中滚动到 ListView 顶部时遇到一些问题 我可以通过调用 ScrollTo 并传递第一项来滚动到第一项 问题是 当列表有标题项时 我找不到滚动到标题的方法 这可能吗 我能想到的唯一解决方法是不使用标头
  • “new new Something”如何在 JavaScript 中产生有效的结果?

    我目前正在开发一个 JavaScript 解析器并研究ECMAScript 5 1 规范 这是目前令我困惑的一个问题 11 2 左侧表达式定义以下内容NewExpression生产 NewExpression MemberExpressio
  • 密码散列的盐也应该被“散列”吗?

    我认为这可能是一个愚蠢的问题 但我已经很困惑我应该在这里做什么才能最好 对密码哈希进行加盐处理时 盐是否也应该进行哈希处理还是保留为明文 注意 我正在对 SHA 256 中的密码进行哈希处理 并且 Salt 是预定义的字符串 因为一次只会存
  • 并发文件写入

    如何写入可由多个源 可能以并发方式 访问的文本文件 确保不会丢失写入操作 例如 如果两个不同的进程在同一时刻写入文件 这可能会导致问题 简单的解决方案 不是很快也不是很优雅 是在开始进程时锁定文件 创建 lock 文件或类似文件 并在写入完