【发布时间】:2016-02-24 07:37:06
【问题描述】:
我需要将来自不同进程的日志数据写入单个文件。
我正在使用需要公共语言运行时支持的 Windows Mutex。
Mutex^ m = gcnew Mutex( false,"MyMutex" );
m->WaitOne();
//... File Open and Write ..
m->ReleaseMutex()
我真的需要从 C++ 更改为 C++/CLI 以进行同步吗?
如果不使用原子也可以。但我需要知道与本地互斥锁相比,使用此互斥锁是否会降低性能。
【问题讨论】:
-
我很确定您在问什么:是否有没有 /clr 的不同解决方案(是的,很多),或者这种不同的解决方案是否明显更快(可能没有),或者什么否则...
-
问题是你没有显示的#include,糟糕的sn-p。具有非托管线程原语(如 std::thread、std::mutex 等)定义的 .h 文件严格执行托管程序不能假定托管线程保证在非托管操作系统线程上运行的规则。这在实践中从未发生过,但在技术上是可行的。您不能#include 这些类型的文件,如有必要,请使用 pimpl 将它们排除在您自己的 .h 文件之外。
-
使用 Windows Mutex 使工作变得简单。所以我想选择它。如果这不是一个好方法,那么我还能做些什么来从不同进程并发写入文件?
-
使用 Boost::mutex 怎么样?
标签: c++ .net synchronization c++-cli mutex