SyncQueue Take(T& t) bug
Closed this issue · 2 comments
baishuai commented
你好,最近在看你的书,书很好。
在第9章发现一个潜在的bug。
SyncQueue.hpp
void Take(T& t)
{
......
if (m_needStop)
return;
}
如果这里不给引用t赋值的话,在ThreadPool
中调用Take(T& t)
,后直接调用t();
就会产生异常
这样是不是更好一些?
void Take(T& t)
{
......
if (m_needStop)
{
t = [] { };
return;
}
}
qicosmos commented
hi,我觉得t在外面赋一个nullptr的初值更好,take出来之后判断是否为nullptr。当然你在内部加也可以,但是感觉外面赋初值会更好。