Звучит как «классическая» очередь производитель-потребитель. Вам нужна потокобезопасная очередь и семафор, инициализированный в 0, для подсчета объектов в нем. Если у вас нет поточно-ориентированной очереди, другой семафор, инициализированный 1, (или мьютекс) сделает защиту очереди от множественного доступа.
По сути, в производителе malloc структура буфера, считывание данных из сокета в него, вставка его адреса в потокобезопасную очередь, сигнал семафора. У потребителя дождитесь семафора, извлеките адрес буфера из очереди, запишите данные в файл на диске, освободите буфер.
С C ++ вы можете заменить буферный класс и new / dispose для структуры буфера и malloc / free. Операции с сокетом / диском могут тогда быть методами класса буфера.
Rgds,
Martin