日期:2014-05-20  浏览次数:20745 次

求助多线程多任务问题
我要监控某一个文件夹,只要文件夹里文件有增加,就把增加的文件内容提取出来并转换成.txt格式文档,并存储在另一个文件夹,只要转换完成,就把原有目录下的原文件删除,如果有500个文件(共500M),单线程处理的话速度很慢,我建立四个线程(我的CPU是4核,可以实现4个线程同时跑),但是有的文件内容被提取后,却存入到另一个文件名下(也就是说本来文件A有内容“123”,文件B有内容“789”,但是经多线程转换后,B的内容却是“123”),还有后台提示系统找不到文件。这是怎么回事?我猜测是线程处理任务冲突,可能是线程1和线程2同时在处理文件A所造成的。不知道各位大神怎么看?如果是我说的那样,该怎么解决呢?最好有例子有代码,谢谢!

------解决方案--------------------
一个线程负责监控,其他线程负责转换处理,也就是典型的生产者消费者的例子了,应该不会有你说的这个问题了,你可能是多个线程都去监控文件夹的变化了,所以导致线程之间的数据冲突。
------解决方案--------------------
你没有做线程同步吧,线程访问了不该访问的资源了
------解决方案--------------------
看看线程同步和各种锁吧
------解决方案--------------------
线程同步这块有问题,仔细检查一下
------解决方案--------------------
这就要看你是如何监控的了,如果轮询文件夹最后修改时间而没有做同步的话是会冲突的,
1楼建议很不错,一个线程监控,一个线程处理生成,一个线程负责存储,横向展开,而不是4个线程纵向运行,既增加复杂性,效率也不会提升太多