1.)一个文件被多个文件分次读取,比如一个1M的文件,多个线程读取之,每个线程每次读1K,请问此时是否需要线程同步控制(CriticalSection之类的)
2.)一个控件,如listbox上记录每个线程的读取进度(每个线程目前读取的包号),这个listbox上的值在不停的变化,请问此时是否需要对该listbox进行同步控制(CriticalSection之类的)

解决方案 »

  1.   

    搂住明白一个规则就行了,那就是如果一个控件或者数据有可能同时被多个线程访问(读and写),那么你就需要用同步控制了,如果只有一个在写,其他都在读,那么就没有必要同步控制。
    1、如果你预先分配好了开始和结束的位置,那么没有必要做同步控制。不然的话,所有进程都排着队等待也体现不出多线程的速度优势了。
    2、如果各个进程分别修改不同行的值的话,我觉得没有必要同步,当然前提是主线程中,listbox是只读的属性。
    一点建议,不是很成熟,需要考虑的事情可能更多...
      

  2.   

    第一个需要对文件的动态跟踪,如果这个文件被改掉了,那么就提示重新读取,但不需要线程同步。第二个需要线程同步,Synchronize(过程名);,因为你在线程里调用了VCL控件。