返回信息流第一次碰到 互斥问题 有些不清楚 希望能得到指点~~
其实我感觉还是程序结构设计上的问题
情况是:
我的主函数类main 需要 对一个test.xml文件进行读写,我使用了现成的CMarkup 操作这个 test.xml
由于要处理一个新的数据结构体node,我封装一个新类cnode,并实现了一个对象mynode作为main的公有成员, 而cnode 部分情况也需要读写test.xml 这就产生了冲突问题
我在main 中 定义一个全局变量 mutex作为互斥量, 由于cnode 与main 是聚合关系,我在cnode.h中 不能再include main.h,如何在conde 里 控制mutex , 并保证它的唯一性?
呃 不知道 这个问题我说清楚了没有....
[em17]
这是一条镜像帖。来源:北邮人论坛 / cpp / #28879同步于 2009/9/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请教 多线程互斥量的问题
unicornhx
2009/9/21镜像同步22 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
windows的话就直接mutex呗
或者简单点用interlockincrese/interlockdecrese(好像不是这么写,意思差不多)
【 在 unicornhx (unicorn) 的大作中提到: 】
: 第一次碰到 互斥问题 有些不清楚 希望能得到指点~~
: 其实我感觉还是程序结构设计上的问题
: 情况是:
: ...................
恩 其实应该是一样的 主要问题是mutex 的声明 定义问题,我出现了
Error 23 error LNK2005: "struct ADIni_Mutex * ADini_mutex" (?ADini_mutex@@3PAUADIni_Mutex@@A) already defined in pjsip_Xml.obj PocketPJ.obj
【 在 MozartKV107 的大作中提到: 】
: windows的话就直接mutex呗
: 或者简单点用interlockincrese/interlockdecrese(好像不是这么写,意思差不多)
汗~ 我已然不知道single 是如何实现的了,不过这个用设计模式 有点大了吧 就一个全局变量
【 在 hs 的大作中提到: 】
: 设计模式。单例模式好像有点像!
我是这样定义的
//main.h
#include “cnode.h”
struct MyMutex {
bool is_Error;
bool is_Running;
handle mutex;
};
struct MyMutex * my_mutex;
;
class main
{
public:
cnode my_node;
}
//
出现 LINK 2005 错误 说MyMutex my_mutex已被定义 在 main.obj 中 我给struct 加了个宏
#ifndef MY_MUTEX
#define MY_MUTEx
struct{}
#endif 还是出现Link 2005 错误 这是怎么了?
【 在 noname 的大作中提到: 】
: 在main.cpp 中定义mutex
: 在cnode里extern 声明mutex