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 )