我启动一个work线程,监控一个目录(用了ReadDirectoryChangeW函数循环来监控),一旦监视到有新文件生成,就发消息给主线程,主线程要对这些新生成的文件进行处理(比较耗时)。本来我设计work线程循环,每发现一个文件,就发消息等待主线程处理完毕,但发现两个线程的同步有问题,work线程如果等待,就会监控不到批量文件的生成,比如,该目录声称了一个1.dat,work线程监控到,等待主线程处理1.dat完毕,但是在这段时间内,又生成2.dat,3.dat,则work线程的ReadDirecotyrChangeW函数监控不到。
应该怎么做,才能保证两个线程互不干扰,既能准确的监控,又能及时的处理。请大家指点迷津
应该怎么做,才能保证两个线程互不干扰,既能准确的监控,又能及时的处理。请大家指点迷津
第二种方法也正是我考虑的。另外这种方法需不需要对队列做同步处理呢,如果不做,会不会导致死锁,如果做了,work线程会否因为等待而忽略了新增的文件呢,希望老大们继续出主意,呵呵
他可以不断的给主线程发现改动的消息
然后在主线程中加一个队列来存放这些信息