ObjStore

 view release on metacpan or  search on metacpan

API/osperl.c  view on Meta::CPAN

      }
      else OSvINDEXED_on(sv);
    } else if (get_mode() == 'u') {
      OSvINDEXED_off(sv);
    }
  }
  return sv;
}

// This API is a bit strange because we need to read off
// the perl stack (which can be relocated).  See XSUB.h.
void osp_pathexam::load_args(int ax, int items)
{
  int args = items - 1;
  if (args > OSP_PATHEXAM_MAXKEYS) {
    warn("Too many keys (%d) in load_args -- truncated to %d keys",
	 args, OSP_PATHEXAM_MAXKEYS);
    args = OSP_PATHEXAM_MAXKEYS;
  }
  keycnt = 0;
  conflict = 0;

notes/10_threads_questions  view on Meta::CPAN

may discover that it needn't have been called, because two threads touched
the same page; in that case it will just return and all will be well.)

ObjectStore fault handler grabs a lock that is shared with the rest of
the ObjectStore runtime - so if one thread is in the fault handler, other
threads will be locked out of the signal handler.  In the scenario above,
thread B will be locked out of the fault handler until thread A is done.

Also, there's the issue of mapaside - if thread A faults on a page, it will
not get mapped into the proper place (if mapaside is on, which is the
default) until the page has been relocated in.  This ensures that thread B
does not see partially relocated data without triggering a page fault (and
so getting locked out as described above) for the page that thread A is
faulting on. 


5. If I do not turn on ObjectStore thread locking, do you still do some
locking under the covers?
----------------------------------------------------------------------
No. ObjectStore does not handle any type of syncronization if thread
locking is turned off.



( run in 0.486 second using v1.01-cache-2.11-cpan-5511b514fd6 )