gpt4 book ai didi

c++ - pthread_cond_t 是一个对象还是什么?

转载 作者:行者123 更新时间:2023-11-28 00:57:04 24 4
gpt4 key购买 nike

我正在使用如下 map :

键--->任务ID

值 ---> pthread_cond_t 对象

当某个任务完成时,我会使用匹配的 pthread_cond_t 元素唤醒与其关联的所有 pthreads

我的问题很简单——pthread_cond_t 是什么?它是一个对象吗?因为如果我删除它, map 会调用它的构造函数,这对我不利。如果不是 - 我可以回去吗

pthread_cond_t cond = *(_flushCond->operator [](task_id)); //map of conditions
_flushCond->operator [](task_id) = NULL;
return cond;

我想做的是释放 map 中的对象供以后使用(我重用 ID)并返回那里的 pthread_cond_t 对象。

最佳答案

正如其他人评论的那样,它是实现定义类型的不透明类型(或者如果您愿意的话,可以处理)。在某些实现中,它可能是指向实际条件变量结构的指针,是结构本身,只是指向某些实现内部数据结构的指针。 POSIX 标准对此不做任何保证或 promise ,并且只允许您对那种类型的“对象”执行一组特定的操作。在这方面,它与其他类型的 Pthreads 非常相似,例如 pthread_mutex_t 或 pthread_t。

您不能安全地或至少可移植地使用 pthread_cond_t 作为 STL 映射中的值。原因是,对值的要求是可复制构造和可分配的。虽然从技术上讲这对于 pthread_cond_t 是可行的,但它不是 legal to do so .

您应该存储一个 pthread_cond_t*(指针),就像您处理其他不可“复制”的类型一样。

关于c++ - pthread_cond_t 是一个对象还是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10504263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com