shinezhang 发表于 2009-3-4 20:53:40

请教个多线程和数据安全队列的问题

请教下诸位个多线程和数据安全队列的问题,我在主线程中创建了两个子线程分别用于数据的采集和分析,同时在主线程中创建了一个安全队列,采集线程采集的数据写入安全队列,对安全队列也指定了它的回调函数,我想把他的回调函数放到数据处理线程中来执行,该怎么办?

shinezhang 发表于 2009-3-4 20:55:19

因为创建子线程时已经指定了子线程要处理的函数,创建安全队列时也指定了他的函数,这两个函数的定义是不同的,我就不知道应该如何办了?

netcreature 发表于 2009-3-5 12:28:27

多线程采集的合理做法是在次线程中采集,而把显示、处理等放在主线程中进行!
因为没有看到你的源码,不知道你是如何处理的,也难以具体说明。因为毕竟每个程序员都有自己的编程习惯。

shinezhang 发表于 2009-3-6 09:05:44

3# netcreature 版主我的意思不是数据怎么显示和处理的问题,而是线程队列的问题。就是你在两个线程之间创建的安全队列不是已经指定了队列的回调函数了吗?而你创建子线程时也指定了子线程要处理的函数。我是想问如何把队列的函数放到子线程中去执行?请版主帮忙哈

netcreature 发表于 2009-3-6 09:52:20

队列的回调函数?!——什么意思?
int CmtNewTSQ (int number_ofItems, int itemSize, unsigned int options, int *queueHandle);
queueHandle是线程安全队列的句柄,两个线程也就是通过它来传递安全变量的。
(如果你能将源码传上来,也许我理解起来比较容易一点!)

shinezhang 发表于 2009-3-6 18:32:40

版主,不是源码的问题哈 源码还没写出来呢 我不知道怎么设计了 呵呵 队列的回调函数就是你通过 int CmtInstallTSQCallback (int queueHandle, unsigned int event, int eventThresholdValue, TSQCallbackPtr callbackFunction, void *callbackData, unsigned int callbackThreadID, int *callbackID)指定的函数(callbackFunction),称为函数一吧。而创建线程时用的是这个函数:int CmtScheduleThreadPoolFunction (int poolHandle, ThreadFunctionPtr threadFunction, void *threadFunctionData, int *threadFunctionID)他指定的回调函数是 threadFunction,而上述两个函数的原型是不同的。我就想把函数 一放到我创建的子线程中来执行,该怎么办?版主

netcreature 发表于 2009-3-9 09:21:34

貌似你的理解有点偏差:线程池的用法只是在大量不确定性数据操作时采用。就你的问题,不需要这么复杂!

shinezhang 发表于 2009-3-9 19:01:13

多谢版主哈,我再考虑下

jiegeng1986 发表于 2009-5-19 16:01:48

没看懂
页: [1]
查看完整版本: 请教个多线程和数据安全队列的问题