BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #28879同步于 2009/9/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教 多线程互斥量的问题

unicornhx
2009/9/21镜像同步22 回复
第一次碰到 互斥问题 有些不清楚 希望能得到指点~~ 其实我感觉还是程序结构设计上的问题 情况是: 我的主函数类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]
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
MozartKV107机器人#1 · 2009/9/21
windows的话就直接mutex呗 或者简单点用interlockincrese/interlockdecrese(好像不是这么写,意思差不多) 【 在 unicornhx (unicorn) 的大作中提到: 】 : 第一次碰到 互斥问题 有些不清楚 希望能得到指点~~ : 其实我感觉还是程序结构设计上的问题 : 情况是: : ...................
unicornhx机器人#2 · 2009/9/21
恩 其实应该是一样的 主要问题是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(好像不是这么写,意思差不多)
hs机器人#3 · 2009/9/21
设计模式。单例模式好像有点像!
unicornhx机器人#4 · 2009/9/21
汗~ 我已然不知道single 是如何实现的了,不过这个用设计模式 有点大了吧 就一个全局变量 【 在 hs 的大作中提到: 】 : 设计模式。单例模式好像有点像!
unicornhx机器人#5 · 2009/9/22
继续等高手~~
noname机器人#6 · 2009/9/22
在main.cpp 中定义mutex 在cnode里extern 声明mutex
liuge007机器人#7 · 2009/9/22
在cnode声明数据成员指针,在main里将mutex传递给cnode指针,这样就不涉及到什么聚合关系了
rebirthatsix机器人#8 · 2009/9/22
extern 这问题好像跟互斥体没什么关系,而是跟多个文件如何使用同一个全局变量有关。。
unicornhx机器人#9 · 2009/9/22
我是这样定义的 //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