Итак, у меня есть структура и очередь (измененная, взята из здесь ) в файле .h моего класса, например:
struct VideoSample
{
const unsigned char * buffer;
int len;
};
concurrent_queue<VideoSample * > VideoSamples;
В файле .cpp у меня есть функция, которую я запускаю каждый раз в новом потоке, посылая несколько аргументов:
void VideoEncoder::AddFrameToQueue(const unsigned char *buf, int size )
{
VideoSample * newVideoSample = new VideoSample;
VideoSamples.try_pop(newVideoSample);
newVideoSample->buffer = buf;
newVideoSample->len = size;
VideoSamples.push(newVideoSample);
}
Итак, как вы видите, я стараюсь, чтобы VideoSamples содержал не более одного элемента (требование).
Интересно, ОС удалит новый VideoSample при нарушении работы потока? Или как его удалить?