Linux下使用C++互斥访问文件,加消息队列解决办法

Linux下使用C++互斥访问文件,加消息队列
Linux下使用C++互斥访问文件
前提:
1,我是一个客户端模块
2,不停接收上层消息,作出判断后,异步调用下层函数,进行文件读写,同时我还在接收上层消息
3,为了避免本次读写还未完成,新的消息又要求读写同一个文件,则需要加锁进行保护,新的消息被阻塞,同时被阻塞的消息需要保存下来,一旦文件空闲就进行处理。

要求:
1,使用C++标准库,STL容器,Linux系统函数
2,提供加锁访问部分的代码
3,提供消息队列部分的代码,包括保存消息和取出消息进行处理
4,请尽量多加注释,并注明所用的头文件

100分起送,回复满意另加,多谢了!

------解决方案--------------------
呼。。
------解决方案--------------------
接收消息模块在收到消息时候可直接写入一个临时文件(如 /tmp/your_program/01.msg)而处理消息模块直接从文件夹中读取消息文件进行处理,一次一个,不会冲突。
------解决方案--------------------
//上层
接收消息
mutex lock
写入临时文件
mutex unlock
执行


//下层
mutex lock
读临时文件
mutex unlock

头文件
#include <pthread.h>

编译加- lpthread


pthread_mutex_t g_mutQueue = PTHREAD_MUTEX_INITIALIZER;
------解决方案--------------------
探讨
真是比直接用钱买还好啊。。

------解决方案--------------------
1,我是一个客户端模块 
2,不停接收上层消息,作出判断后,异步调用下层函数,进行文件读写,同时我还在接收上层消息 
3,为了避免本次读写还未完成,新的消息又要求读写同一个文件,则需要加锁进行保护,新的消息被阻塞,同时被阻塞的消息需要保存下来,一旦文件空闲就进行处理。


给你出一个馊主意,你在向一个文件里面写的时候,给他建一个副本,就像是 a.txt,副本为 swap.a.txt
你在关闭之后,保存的时候,把swap.a.txt,覆盖a.txt;
有其它的文件流,想修改此文件的时候,查找有没有 swap.a.txt

貌似 linux 就是这么做的,只不过 swap.a.txt的属性是 h 而已;
------解决方案--------------------
我觉得一个map<string fileName, bool isLocked, Vector<Message*> msgList>,再加上一把加锁,问题基本就解决了
------解决方案--------------------
MARK
------解决方案--------------------
lin_style 这司诋毁好人啊。