C++ pthread条件是对象还是什么?
我使用的地图如下: 密钥-->任务ID 值-->C++ pthread条件是对象还是什么?,c++,pthreads,conditional-statements,C++,Pthreads,Conditional Statements,我使用的地图如下: 密钥-->任务ID 值-->pthread\u cond\t对象 当某个任务完成时,我会使用匹配的pthread\u cond\t元素唤醒所有与其关联的pthread 我的问题很简单-什么是pthread\u cond\t?它是物体吗?因为如果我删除它,映射会调用它的构造函数,这对我来说是不好的。如果不是,我能回来吗 pthread_cond_t cond = *(_flushCond->operator [](task_id)); //map of condition
pthread\u cond\t
对象
当某个任务完成时,我会使用匹配的pthread\u cond\t
元素唤醒所有与其关联的pthread
我的问题很简单-什么是pthread\u cond\t
?它是物体吗?因为如果我删除它,映射会调用它的构造函数,这对我来说是不好的。如果不是,我能回来吗
pthread_cond_t cond = *(_flushCond->operator [](task_id)); //map of conditions
_flushCond->operator [](task_id) = NULL;
return cond;
我试图做的是释放map中的对象以供以后使用(我重用ID),并返回那里的
pthread\u cond\t
对象。正如其他人所评论的,它是一个不透明类型(或句柄,如果您愿意的话)到实现定义的类型。在某些实现中,它可能是指向实际条件变量结构的指针,也可能是指向某些实现内部数据结构的指针的结构本身。POSIX标准对此不作任何保证或承诺,并且只允许您对该类型的“对象”执行一组特定的操作。在这方面,它与其他类型的pthread非常相似,比如pthread_mutex_t或pthread_t
在STL映射中,不能安全地或至少可移植地使用pthread_cond______________________t作为值。原因是,对值的要求是可复制构造和可分配的。从技术上讲,这在pthread条件下是可行的,但事实并非如此
相反,您应该存储pthread_cond_t*(指针),就像您对其他不可“复制”的类型所做的那样。正如其他人所评论的那样,它是对实现定义类型的不透明类型(或句柄,如果您愿意)。在某些实现中,它可能是指向实际条件变量结构的指针,也可能是指向某些实现内部数据结构的指针的结构本身。POSIX标准对此不作任何保证或承诺,并且只允许您对该类型的“对象”执行一组特定的操作。在这方面,它与其他类型的pthread非常相似,比如pthread_mutex_t或pthread_t 在STL映射中,不能安全地或至少可移植地使用pthread_cond______________________t作为值。原因是,对值的要求是可复制构造和可分配的。从技术上讲,这在pthread条件下是可行的,但事实并非如此
您应该存储一个pthread_cond_t*(指针),就像您对其他不可“复制”的类型所做的那样。pthread是一个C API,因此不会有构造函数或任何东西。您应该能够自由地传递它。但是它是否有任何指针,或者除基元类型之外的任何其他类型?它是不透明类型,因此您的代码不应该关心其中的内容。它是一个结构。不要依赖于任何特定的东西,它的目的是不透明的。我只需要知道我使用的赋值是否合法,我猜它是一个C API,所以不会有构造函数或任何东西。您应该能够自由地传递它。但是它是否有任何指针,或者除基元类型之外的任何其他类型?它是不透明类型,因此您的代码不应该关心其中的内容。它是一个结构。不要依赖于有任何具体的,它的目的是不透明的好吧,我只需要知道我使用的转让是合法的,我想是的