예제 #1
0
  /**
   * When using non-blocking privatization, this is called to check the
   * privatization clock. This will make sure that a doomed transaction doesn't
   * do anything dangerous with an object that is possibly being written
   * non-transactionally. It will throw an stm::RollBack transaction if
   * validation fails.
   *
   * @throws    stm::RollBack
   */
  void checkPrivatizerClock() {
#ifdef STM_PRIV_NONBLOCKING
    while (privatizer_clock_cache != privatizer_clock) {
      privatizer_clock_cache = privatizer_clock;
      validate();
      verifySelf();
    }
#endif
  }
예제 #2
0
MBOOL
IPostProcPipe::
Cmd_Get1ParamBasedOn1Input::
execute()
{
    if  ( verifySelf() )
    {
        IPostProcPipeBridge*const pBridge = reinterpret_cast<IPostProcPipeBridge*>(mpIPipe);
        //
        Mutex::Autolock _lock(pBridge->getLockRef());
        //
        PostProcPipe*const pPipe = pBridge->getImp();
        return  pPipe->onGet1ParamBasedOn1Input(mu4InParam, mpu4OutParam);
    }
    return  MFALSE;
}
예제 #3
0
MBOOL
IPostProcPipe::
Cmd_Set2Params::
execute()
{
    if  ( verifySelf() )
    {
        IPostProcPipeBridge*const pBridge = reinterpret_cast<IPostProcPipeBridge*>(mpIPipe);
        //
        Mutex::Autolock _lock(pBridge->getLockRef());
        //
        PostProcPipe*const pPipe = pBridge->getImp();
        return  pPipe->onSet2Params(mu4Param1, mu4Param2);
    }
    return  MFALSE;
}