一个线程循环取一个队列里的文件,来进行传输,占很高的CPU.怎么解决啊?我现在就是SLEEP会,可是效果不大!(我只想起一个线程)

解决方案 »

  1.   

    应该是读文件太耗CPU了,不是线程本身的问题
      

  2.   

    没代码,不好说,建议楼主将代码精简,来判断是传输占用CPU,还是文件部分占用CPU.
      

  3.   

    精简代码,在线程中加Sleep没问题;
    注意线程中等带的对象 ,别造成线程和主线程循环等待,也就是死锁
      

  4.   

    估计是你队列中没有文件时你的线程没有等待而不断空循环造成cpu占用暴高的。 只要让你的线程在队列空时进入等待就行了, 简单办法就是加个event然后WaitForSingleObject等待, 往队列中添加文件的同时SetEvent激活线程
      

  5.   

    to Idle_
    我现在就是这样,有个EVENT在等待,可是队列有时是一次放入好几个内容再激活EVENT,这中间是一直循环传的,所以CPU高了,可是怎么确定是读文件耗的CPU还是传输呢???我的传输也是在个while中循环send数据的,是不是这个的事,如果是,是不是没辙了就,这里面不能SLEEP了吧???
      

  6.   

    在while循环中无条件的疯狂进行I/O操作当让会占用很高的CPU
    可以考虑IOCP或者Idle等方式