首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

线程池中一个线程完成任务后,怎么更换参数处理上一个任务

2012-08-02 
线程池中一个线程完成任务后,如何更换参数处理下一个任务?我写了一个函数处理txt文件,因为文件很多,cpu是4

线程池中一个线程完成任务后,如何更换参数处理下一个任务?
我写了一个函数处理txt文件,因为文件很多,cpu是4核的,所以希望用线程池来加快速度。

创建线程时可以传递txt文件名参数,当一个文件处理完后,到这里正确。

我SuspendThread起来,更换txt文件名,然后resumethread该线程。但不能正常运行。

下面链接中说:

ResumeThread 是将挂起的线程恢复,挂起线程的时候,只是不再给线程分配时间片。但是线程有保护现场的功能。ResumeThread以后,线程继续原来的工作,没有任何的影响。也不需要传递什么参数。原来是什么,现在还是什么。

唤醒时是从上次执行被挂起的地方开始执行的,又不是从线程开始部分执行的,这时线程时不可能接收新参数的
因此ResumeThread是不能带所谓的“参数”的,你不可能从一个函数中间开始带参数执行

http://topic.csdn.net/u/20090518/17/e2a55c5d-34f9-4978-bd49-a12480369f0e.html

而我恰恰需要更换参数,那么朋友们是如何操作的?

[解决办法]
可以在线程中循环处理txt。

当一个文件处理完后,发一个消息给主线程,设新的文件名。
[解决办法]
每个任务添加的时候带上对应的文件名,线程中来取这个数据处理
[解决办法]
如果TXT文件不是临时生成的话,事先用一序列保存所有的文件名,线程启动后直接从序列中读取文件处理,做好线程同步就没有问题
如果文件是实时生成的,那么另开一线程将文件名保存到序列中去

热点排行