是函数线-安全吗? 该glibc手册 似乎在说,但我的应用程序,其写入文件,使用单一的呼吁函数()似乎是混合部分写入了从不同的过程。

编辑:澄清,程序问题是 程序 插件,并将服务器运行多个工作人员的螺纹。

在寻找的文件,一些写间杂。

编辑2:它似乎是问题我看到的可能是由于程序的"工作线程"实际上是分开的过程: http://redmine.lighttpd.net/wiki/lighttpd/Docs:MultiProcessor

的问题

通过运行2个或更多的处理上 同窝,你会有一个更好的 并发性,但会有一些 缺点,你必须要知道 为:

  • mod_accesslog可能创建破碎的访问日志,如同打开文件的两倍并不是同步的。
  • mod_status会有 n 独立的柜台,一组用于每 过程。
  • mod_rrdtool将失败,因为它接收到同一时间戳的两倍。
  • mod_uploadprogress将不会显示正确状况。
有帮助吗?

解决方案

你是混淆两种概念写入从多个线程和编写从多个进程。

内部过程的其能够确保这一调用的函数是前完成下一个被允许访问产出的缓冲区,但是一旦你的应用泵的输出文件,你在摆布操作系统。没有某种形式的操作系统的锁定机制,你不能确保一个完全不同的应用程序不写信给你的记录文件。

其他提示

我听起来就像你需要读 文件锁定.你有问题是,多个进程(即不线)编写相同文件的同时,并没有可靠的方式确保写将原子.这可能导致在文件复盖的其他写道,混合输出,并且完全不确定性的行为。

这有什么用线的安全,因为这是有关只有在单进程的多线程的程序。

目前C++标准没说什么有用的有关的并发,也不1990年C的标准。(我还没有阅读1999年C的标准,因此不能评论;即将到来C++0x标准并说的事情,但我不知道到底是什么随便的.)

这意味着函数()本身很可能是既不线的安全,也不否则,它将取决于实施情况。我读到底是什么glibc文件说,有关它,并且比较确切地你在做什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top