我可以理解it
正在迭代buckets_
,但这个for循环中的操作是什么?在我的调试中,if (it->second)
满意if (this->next()->putq(it->second) == -1)
不满意。那么这个for循环只能判断GADGET是否失败了吗?
for (map_type_::iterator it = buckets_.begin(); it != buckets_.end(); it++) {
if (it->second) {
if (this->next()->putq(it->second) == -1) {
it->second->release();
GDEBUG("Failed to pass bucket down the chain\n");
return GADGET_FAIL;
}
}
}
答案 0 :(得分:1)
您的地图很可能包含指针。 if (it->second)
检查指针是否为NULL
,如果不是NULL
,则执行转到下一个if语句(if (this->next()->putq(it->second) == -1)
)最有可能“将桶传递到链中” ...如果失败(返回-1),则GADGET_FAIL
将作为错误代码返回。
putq
实际上可能永远不会返回-1,或者可能仅在非常危险的情况下(系统内存不足)。因此,第二个if
语句中的代码可能(几乎)无法达到。
因此,循环可以判断GADGET“传递链”是否失败。但它可能永远不会失败。
如果没有更多putq
发布的代码......