我打算使用boost::interprocess
在C++和Python进程之间共享内存。假设我需要 boost 提供的互斥锁来确保只有一个进程访问内存,我如何让 python 确认并解锁/锁定由 boost 创建的互斥锁?
似乎有两种明显的方法:
- 查找用于
boost
的现有 python 包装器 - 编写一个C++ Python 扩展模块,为应用程序提供特定于域的 API
使用上面链接中的示例和一些猜测,你会得到这样的东西:
static PyObject *mySharedMutex_lock(PyObject *self, PyObject *args)
{
const char *objectName;
int sts;
if (!PyArg_ParseTuple(args, "s", &objectName))
{
return NULL;
}
boost::interprocess::named_mutex mutex(open_or_create, objectName);
mutex.lock();
return Py_None;
}
显然,您需要上面链接说明中的其他样板文件,并且可能提供一种解锁互斥锁的方法。 让这个工作看起来不是很繁重。