Я использую приложение, в котором приложение более низкого уровня всегда вызывает функцию обратного вызова RecData (char * buf) при получении данных.
В обратном вызове я создаю два потока и передаю функции потребителя и производителя этим созданным потокам соответственно.
Мой код:
void RecData (char * buf)
{
CreateThread(NULL,0,producer_queue,(void *)buf,0,NULL);
CreateThread(NULL,0,consumer_queue,NULL,0,NULL);
}
Вышеуказанное работает, когда я получаю по одной информации за раз. Если я получаю, скажем, 5 данных почти в одно и то же время, то файл generator_queue должен сначала поместить все данные в очередь, а затем customer_queue должен начать извлекать данные, но здесь, как только производитель_строк помещает первые данные в очередь, consumer_queue получает их.