我构造了个mmyproc,再用AfxBeginThread调用,NULL的位置可以是m_i这样的东东
AfxBeginThread(mmyproc,NULL);
希望有帮助吧~
UINT mmyproc(LPVOID p)
{ CProgressCtrl pw;
pw=(CProgressCtrl)p;
CString m,b; int n;
for (n=0;n<12;n++)
{
mFormat("%d",n);
b="192168170"+m;
ShellExecute(NULL,"open","pingexe",_T(b),NULL,SW_SHOWNORMAL);
}
return 0;
}对于socket通信的 *** 作,不要放在主线程,另开一个子线程,顺便一说,accept这个方法是堵塞的,在没有收到消息的情况下会一直堵塞在那里,所以如果你客户端没发送数据给服务端,那么基本服务端所在那条线程会停滞在那个方法,估计就这原因让你的程序看起来是卡死的,所以咯,别把通信的 *** 作写在主线程,要写在子线程看场景;
效率的瓶颈不在代码的时候,比如用的最多的io *** 作,
下载器,下载服务器每个接口就给你500k的速度,那多线程相当于500n,本地网络最大2m每秒,可以开3~5个线程自然快;
复制器,windows *** 作系统复制文件很慢,因为负责复制的api防止系统卡死每个线程就给你那点速度,如果用java写个多线程io流复制,速度快8倍左右;
这样的场合有个特点,速度或者说效率的关键不是java的处理能力,而是接口限制成了瓶颈;
举个反例,如果对一个集合进行遍历,打印value,使用多线程明显比单线程效率低;因为时间过多的消耗在了创建线程,销毁线程上,执行的有用代码和单线程没区别,效率不如单线程;会话线程和网络卡顿之间存在一定的关系。会话线程是指与远程服务器建立连接,发送、接收数据的线程,它是网络请求的核心。当网络请求过程中出现卡顿,主要是因为网络带宽受限或者数据处理速度不够快,导致网络请求所使用的会话线程无法及时地处理完数据而阻塞,从而影响到整个网络请求的效率。具体表现为:网络请求响应时间变长,甚至请求超时,UI界面无法正常显示,甚至会出现假死状态。因此,在进行网络请求的同时,也需要保证会话线程能够顺畅运行。
为了解决网络卡顿的问题,一般有以下几种方式:
1 合理选择网络请求方式。在发送比较大的数据时,可以选择分块发送,避免一次性发送过多数据,使得网络负载过重。
2 使用多线程进行数据处理。将数据处理开辟到独立的线程中,可以避免会话线程阻塞,从而提高网络请求的速度。
3 优化网络请求算法。合理的算法可以节省网络带宽,提高数据传输速度。
4 减小及其他资源的体积。合理的压缩算法、安排线程处理资源等方式,都可以让网络请求更加快速高效。
综上所述,会话线程和网络卡顿之间的关系较为密切,优化会话线程的同时也可以有效地提高网络请求的速度,从而避免网络卡顿。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)