【发布时间】:2012-03-11 23:51:43
【问题描述】:
您好,我想维护一个创建的信号量列表及其允许的计数(允许访问该信号量的线程实例数)值。我尝试使用 stl 中的地图,例如
map<sem_t, int> sem_map;
这样 key(sem_t) 的计数作为映射中的值。
但是 c++ 不允许我使用 sem_t 作为键,因为它是 (sem_t) 联合类型。那么,我怎样才能维护一个信号量列表呢?我的目标是每当我想锁定或解锁信号量时,我首先从我维护的列表中获取信号量的 id 并对其进行一些预处理。
【问题讨论】:
-
你能不能存储类似 map
sem_map 的东西,其中 threadID 是你的键,你的联合类型是值?否则,您需要声明并定义一个类来保存您的信号量、最大线程数、当前线程数、线程 ID 和可选字符串标识符 -
嗨,我想是的,只是想保持简单。
标签: c++ synchronization pthreads semaphore