首页 文章

使用MFC同步对象的缺陷

提问于
浏览
1

我在我的项目中使用了MFC同步对象,没有任何问题 . 但最近我发现了一篇文章,解释了MFC synchronization is completely wrong . 我正在谈论但我认真地认为MFC在最近的版本中已经成熟 . 我正在使用随Visual Studio 2008安装一起提供的MFC库 . 使用此版本的MFC库是否安全,尤其是同步?

2 回答

  • 1

    关于互斥锁超时,有一个并行软件设计学校,说你不应该使用超时进行正常操作 . 然后你的设计会涉及互斥锁或其他没有超时的锁,而超时实际上是一种处理死锁的机制:你试图设计你的系统不会出现死锁,但万一它们确实发生了,你宁愿拥有它失败或多或少优雅,而不是永远保持交易 .

    如果以这种方式使用锁,那么为什么尝试获取互斥锁失败可能并不重要 .

    另一方面,它看起来似乎没有从根本上打破,但至少有些不足,这些信息没有任何理由丢失,并且有更好的框架,为互斥体提供OO包装器,所以不管这样在这种情况下避免使用MFC似乎喜欢一个好主意 .

  • 1

    作者的断言并不适用于所有条件,而是适用于特定条件 . Lock 返回BOOL,你大部分时间都不在乎是否因为某些原因失败了 . 大多数时候你会打电话来锁定或等待 . 在其他情况下,FALSE意味着失败 . 如果需要检查超时,可以使用本机API(这种情况很少见) .

    递归 CSingleLock 是荒谬的 . 您不使用 same 对象重新锁定 . 您可以安全地使用multipe CSinlgeLock 对象来获得递归访问 .

    CEventCMutex 和其他命名对象类可以在整个过程中使用 . 我用过了!

    我不使用信号量 . 可能是其他一些人可以评论 .

相关问题