codecola 发表于 2010-11-8 10:48:08

ACE_Process_Mutex的问题

求助各位大侠:
在使用ACE_Process_Mutex的过程中发现,在一个进程获得ACE_Process_Mutex之后,如果收到SIGSTOP信号,再收到SIGCONT信号后,锁就被释放了,另一个进程可以马上获得该锁。

而多个进程是需要同步的,我该怎么做?

modern 发表于 2010-11-8 15:37:23

截获SIGSTOP,SIGCONT这两个信号试试

codecola 发表于 2010-11-8 16:04:58

sigstop是不可以捕获的。
试验了一下,我用的ACE_Guard会被SIGSTOP中断。
自己又写了一个模板,不用ACE_Guard了。
template <Class Lock>
class Unbreakable_Guard
{
public:
    Unbreakable_Guard(Lock &l)
      : l_(l)
    {
      while(l_.trayacquire() != 0)
            usleep(10);
    }
    ~Unbreakable_Guard()
    {
      l_.release();
    }
private:
    Lock& l_;
};
这样就不会被SIGSTOP打断了。

大家帮我分析一下,这样用有什么问题没有?
这是ACE_Guard的bug吗?
页: [1]
查看完整版本: ACE_Process_Mutex的问题