???????????????????????????????????а????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????С??????????У??????????????????????????????в????????

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????

????1????????????????????飬???????????????????λ??С?????磺??????????У???????ж????????????????????????????????????ж??У??????е?????????????е???????????????

????2???????????????????????????????????????????????????????????????????????á????????????????????????????????ü????????????????????????????磺

??????????

char* msg = NULL;
if (!_queue.is_empty())
{
    sys::CLockHelper<sys::CLock> lock(_lock); // ?????????????????????????????????
    msg = _queue.get_message(); // ??????????????????
} // ???е???????????????????

// ??????????????????msg????д???????
fputs(msg?? fp);

???????????

Object* obj = NULL;
if (!_queue.is_empty())
{
    sys::CLockHelper<sys::CLock> lock(_lock); // ?????????????????????????????????
    obj = _queue.get_object(); // ??????????????????
    obj->inc_refcount(); // ???????ü???
} // ???е???????????????????

// ??????????????obj??????????????????Χ???

// ???????????????????
sys::CLockHelper<sys::CLock> lock(_lock);
if (obj->dec_refcount() > 0) // ???????????????obj????????????????????????????????????
    _queue.push_object(obj);
fputs(msg?? fp);