In TS, is it important to favor use of continuation mutexes to avoid
thread blocking. For example, should code like this:
before();
TSMutexLock(mutex);
critical_section();
TSMutexUnlock(mutex);
after();
be replaced with code like:
int contf_after(TSCont, TSEvent, void *)
{
after();
return 0;
}
int contf_critical_section(TSCont, TSEvent, void *)
{
critical_section();
static TSCont cont_after = TSContCreate(contf_after, nullptr);
TSContSchedule(cont_after, 0, TS_THREAD_POOL_DEFAULT);
return 0;
}
// ...
before();
static TSCont cont_critical_section =
TSContCreate(contf_critical_section, mutex);
TSContSchedule(cont_critical_section, 0, TS_THREAD_POOL_DEFAULT);
// ...
(This is plugin code but I assume the same principle would apply to core code.)