// boost/interprocess/sync/windows/sync_utils.hpp
void* open_or_create_mutex(const sync_id &id)
{
NameBuf name;
fill_name(name,id);
permissions unrestricted_security;
unrestricted_security.set_unrestricted();
winapi_mutex_wrapper mtx_wrapper;
mtx_wrapper.open_or_create(name,unrestricted_security);
throw_if_error(mtx_wrapper.handle());
return mtx_wrapper.release();
}
sync_id
用QueryPerformanceCounter
调用的结果初始化,例如:
LARGE_INTEGER counter;
QueryPerformanceCounter(&counter);
sync_id = counter.QuadPart;
name
由sync_id
生成:
name = "Global\\boost.ipc" + hex_string(sync_id);
如何通过上述算法使Boost产生唯一的“名称”? sync_id
是一个int64_t
值,看来这可能不是唯一值。