我的程序中有一个映射,用于保存由pthread_create方法创建的pthread(需要放置该pthread的位置),并与相关的线程ID相关联。
在pthread函数的最后一个命令中是否存在从映射中删除pthread的问题?

最佳答案

如您所说,您正在持有线程ID。这只是一个数字。而已。

擦除元素(数字)不会对您的程序造成任何损害。

编辑:但是,您应该检查,std::map中的擦除元素是否已同步完成。不要忘记STL容器可能不是线程安全的。有关更多信息,请参见this问题。

Edit2:为确保您没有同步问题,请执行以下操作:

pthread_mutex_t mut;         //global variable
pthread_mutex_init(&mut,0);  //initialize mutex before calling pthread_create()



//and use mutex to prevent synchronization problems in the end of .
pthread_mutex_lock(&mut);
my_map.erase(key);
pthread_mutex_unlock(&mut);

关于c++ - 在运行时删除持有pthread的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5553853/

10-13 07:24