发觉加上Sleep(1); 按钮拼命点程序还是会卡掉;

解决方案 »

  1.   

    不加Sleep(1),主线程在一瞬间创建了60个线程,多个线程之间的切换导致了短时间内CPU 占用率太高加上那个Sleep(1) 之后
    主线程每创建一个线程后就让出时间片,执行其他的线程,而其他线程什么也不做,就直接退出了。所以同一时刻同时运行的线程并不多,也就不会发生线程之间的频繁切换
      

  2.   

    主要是线程切换消耗CPU时间,导致界面线程得不到时间片~~
      

  3.   

    主要是线程切换消耗CPU时间,导致界面线程得不到时间片~~
      

  4.   

    主要是线程切换消耗CPU时间,导致界面线程得不到时间片~~
    不是很明白你的意思, 我才创建60个线程.尽管线程切换消耗CPU时间;那也不大可能卡到连机器都动不了啊.WINDOW不是可以同时跑上百个线程的吗?那些服务器不同时搞了上百个线程跑.再说了我这线程一开启就结束掉的;
      

  5.   

    不加Sleep(1),主线程在一瞬间创建了60个线程,多个线程之间的切换导致了短时间内CPU 占用率太高 ;
    我就是等上半个小时.程序一样挂在那不动,界面什么都点不了!
      

  6.   

    void CMainDlg::OnButton(UINT uNotifyCode, int nID, CWindow wndCtl) 这个是阻塞式调用,它会把界面消息阻塞住,直到这个函数退出才会有新的消息得到执行.
    而这期间,大量的反复创建线程,会使CPU占用率直线上升,从而使界面挂住.
      

  7.   

    好像问题在 _beginthreadex函数, 不返回.
      

  8.   

    线程函数Dummy_SendThread中做了什么,线程少创建一点呢..
      

  9.   

    Dummy_SendThread什么都不做的.直接 return 0;
    这才叫郁闷.
      

  10.   

    他说过了,线程函数直接返回0,只有一句话:return 0;
    加了sleep(1),按钮界面让出时间段,界面会小卡一会,但CPU变化不大的呵呵,等于是每次运行一个线程,而这个线程又马上返回了,系统基本在同一时间只增加一个线程调度,不会占用太多CPU,
    不加sleep(0),在按钮运行的时候时间段里,可能瞬间要产生N个线程,系统要忙着为这几个线程分配空间的初始化呢,CPU自然就上去了,界面线程有可能分不到时间段,就假死在那里了
      

  11.   

    他说过了,线程函数直接返回0,只有一句话:return 0;
    加了sleep(1),按钮界面让出时间段,界面会小卡一会,但CPU变化不大的呵呵,等于是每次运行一个线程,而这个线程又马上返回了,系统基本在同一时间只增加一个线程调度,不会占用太多CPU,
    不加sleep(0),在按钮运行的时候时间段里,可能瞬间要产生N个线程,系统要忙着为这几个线程分配空间的初始化呢,CPU自然就上去了,界面线程有可能分不到时间段,就假死在那里了
      

  12.   

    刚打了vs2005 sp1补丁.好像没问题了.晕死!
    在此谢谢各位热心帮助......