【发布时间】:2009-03-13 05:27:50
【问题描述】:
我正在使用一个应用程序,其中较低级别的应用程序在接收数据时总是调用回调 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 个数据,那么 producer_queue 应该首先将所有数据放入队列中,然后 consumer_queue 应该开始检索数据,但是在这里一旦 producer_queue 将第一个数据放入队列中,consumer_queue 就会检索它。
【问题讨论】:
-
每次接收数据时产生 2 个线程有什么原因吗?
-
不,我唯一的动机是将数据排入队列,然后从队列中读取数据,但如果我只是在 RecData (char * buf) 函数中为生产者放置一个线程,那么我将如何以及何时开始从队列中读取数据。请帮忙
-
另一种方法可能是生成单个阅读器线程。在 RecCall 中,您只需锁定队列,然后将数据排入队列。您的 Reader 线程将循环从队列中读取数据。只是一个想法。
-
你能告诉我我应该如何编码这个..请输入几行代码来完成它
标签: multithreading queue