咨询有经验的大侠:多线程情况下,文件io操作是否要加锁?解决办法

咨询有经验的大侠:多线程情况下,文件io操作是否要加锁?
文件io操作的方式众多,
c中FILE指针
c++中iostream
win   sdk   也OpenFile   API
MFC中有CFile,CStdioFile等对象

这些操作方法中,哪些多线程安全的?可以多线程调用而不用加锁?

另外,对于文件操作,曾经听人说过避免加锁,因为io操作很容易失败,从而造成死锁情况,请问,是这样吗?

------解决方案--------------------
毕加索!!!呵呵。如果失败,就在异常中捕获,然后在解锁。
------解决方案--------------------
这些都不是线程安全的,所以都要加锁。
------解决方案--------------------
应该要加锁呀,死锁是你加锁的方法或者顺序不对,而不是需不需要加锁的问题。
------解决方案--------------------
需要加锁,失败再解锁