【问题标题】:Is SPLFileObject atomic?SPLFileObject 是原子的吗?
【发布时间】:2011-03-03 02:07:10
【问题描述】:

我想知道 PHP SPLFileObject 的方法是否是原子的(例如线程安全的)?

如果不是,我将实现我自己的类,它将使用flock(),但这是否足够?群函数真的是线程安全的吗?如果在我fopen() 文件之后但在我flock() 之前发生冲突怎么办?

【问题讨论】:

    标签: php atomic


    【解决方案1】:

    我认为您误用了“线程安全”一词。线程安全(主要)是关于线程代码中的共享资源。 PHP 没有线程,文件句柄不是共享资源。不过,文件是共享资源。我认为您正在寻找“race condition”这个词。

    如果在我fopen() 文件之后但在我flock() 之前发生冲突怎么办?

    如果您不使用 SPLFileObject,也会发生同样的事情。只要确保你从不打开+截断,总是打开+追加,然后在你有锁后截断。如果您已经了解文件打开和锁定竞争条件的工作原理,这应该是标准程序。

    【讨论】:

      猜你喜欢
      • 2010-12-11
      • 2020-05-07
      • 2013-01-26
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多