c++ - 将`std::condition_variable`放入未实例化的结构中?
问题描述
定义了一个用于 IPC 的结构:
struct shmbuf {
mutable std::mutex mtx;
std::condition_variable cv;
bool inited;
};
struct shmbuf* mySHMBuf;
如您所见,我只有一个指向它的指针,并且该指针的分配如下:
mySHMBuf = mmap(NULL, sizeof(struct shmbuf), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);
但在这种情况下,似乎std::condition_variable
根本不起作用(它卡在里面wait
并且永远不会醒来,以防其他人打电话mySHMBuf->cv.notify_all()
)。
我猜在这种情况下,条件变量根本没有正确初始化,但由于它没有复制构造函数,我不能给它分配任何其他东西。
我可以以某种方式解决这个问题,或者我的选择是什么?不要在这些情况下使用它?用它作为指针(不好的感觉)?
如果需要更多详细信息,我的初始示例来自这里:https ://man7.org/linux/man-pages/man3/shm_open.3.html
它是纯 C,不使用任何 C++ 特性。
我应该像示例中那样坚持使用旧的 C 风格信号量吗?
解决方案
推荐阅读
- search-engine - Azure 搜索功能 - 隐藏、提升、黑名单
- batch-file - 根据 Windows 版本修改文件内容
- python - 在提供训练数据时,Keras 似乎比 tensorflow 慢
- java - 等于 2 个 Java 对象
- xamarin.forms - Android Emulator 部署速度
- amazon-web-services - 从计划的 lambda 函数创建重复的 AMI
- shell - awk 没有创建表。只有标签被打印
- java - 致命异常:java.lang.StringIndexOutOfBoundsException
- python - 使用 python tensorflow 模型识别验证码图像,但出现一些问题
- sql - 有没有办法在计算列中保留 dateparts Week 和 DayOfWeek?