Я использую приложение, в котором приложение более низкого уровня всегда вызывает обратный вызов 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 данных почти одновременно, то производитель_очереди должен сначала поместить все данные в очередь, а затем потребитель_очередь должен начать извлекать данные, но здесь, как только производитель_очередь помещает первые данные в очередь, потребитель_очередь извлекает их.