1

我有一个 CFile 对象,它可以被多个线程访问。有可能一个线程正在向该文件写入数据,而另一个线程正在从该文件中读取数据。我想知道这个政策有什么不安全的地方吗?文件指针可以在写入或读取过程完成之前更改吗?答案是肯定的,如何避免可以同时读写的多线程的不安全性?

非常感谢你!

4

1 回答 1

1

CFile对象不是线程安全的。如果您需要从多个线程访问它们,则需要执行自己的同步。

来自http://msdn.microsoft.com/en-us/library/aa270950.aspx

从多个线程访问对象

出于大小和性能的原因,MFC 对象在对象级别不是线程安全的,仅在类级别是线程安全的。这意味着您可以让两个单独的线程操作两个不同的 CString 对象,但不能让两个线程操作同一个 CString 对象。如果您绝对必须让多个线程操作同一个对象,请使用适当的 Win32 同步机制(例如临界区)保护此类访问。有关临界区和其他相关对象的详细信息,请参阅 Win32 SDK。

类库在内部使用临界区来保护全局数据结构,例如调试内存分配使用的那些。

于 2009-04-07T06:51:09.617 回答