社区
网络编程
帖子详情
window XP的一个奇怪问题
victor_cui
2009-02-25 04:13:49
我有一个应用程序,每60ms会收到一个数据包,但是当切换其他应用程序UI的时候,会发现影响了数据的收发,经常会被耽搁两三百毫秒一下把几个数据一次收上来,我使用了select和wsaselect模型都有这个问题,但是vista下测试没有发现,请问其中的原因,如何避免?
我有一个简单的测试程序,阻塞在socket上不停的接收,这个问题就不存在了,不知道为什么
...全文
174
21
打赏
收藏
window XP的一个奇怪问题
我有一个应用程序,每60ms会收到一个数据包,但是当切换其他应用程序UI的时候,会发现影响了数据的收发,经常会被耽搁两三百毫秒一下把几个数据一次收上来,我使用了select和wsaselect模型都有这个问题,但是vista下测试没有发现,请问其中的原因,如何避免? 我有一个简单的测试程序,阻塞在socket上不停的接收,这个问题就不存在了,不知道为什么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
瓶盒
2009-03-05
打赏
举报
回复
可能是消息缓冲下来了,可以试下改用信号量来控制。
coolwwwlong
2009-03-05
打赏
举报
回复
流技术,很有前途的
victor_cui
2009-03-03
打赏
举报
回复
跟踪发现问题出在postevent函数上,虽然这个函数大多数情况下会很快返回,但是当进程切换的时候,偶尔这个函数返回需要数百毫秒,问题就出在他身上。另一个问题,我现在窗口也是在主线程创建,而另一个线程来处理这个自定义窗口的消息,那这个窗口和主线程用相同的消息队列吗
cnzdgs
2009-02-27
打赏
举报
回复
那就把这两个线程优先级设高,其它不变。
victor_cui
2009-02-27
打赏
举报
回复
我的程序是这样的,一个单独的网络线程负责数据收发,然后交给别的线程处理
victor_cui
2009-02-27
打赏
举报
回复
我们的程序是语音应用,出现这样的状况会很大的影响语音质量,而增加buffer又会是delay变长,所以都不是我们所期望的
Conry
2009-02-27
打赏
举报
回复
这时因为虽然网络的包网卡收到了,但是cpu在处理其他程序顾不上你,等他顾上你了,网卡已经收到好多数据了
这些根本就不应该是你操心的,你就把接收处理好,从你的描述来看主要是粘包问题处理好就行了,
如果你这时运行一个耗资源的其他程序,你的这个程序会更慢,
victor_cui
2009-02-26
打赏
举报
回复
把进程和线程的优先级都提高到实时,并没有明显的改善,真不知道windows的实时有什么用。抓包看数据还是均匀的,应该是进程不能及时得到数据已经来到的通知,不知道有什么方法可以避免
cnzdgs
2009-02-26
打赏
举报
回复
你用一个单独的线程来接收,把这个线程的优先级设高一些,主线程不变。
victor_cui
2009-02-26
打赏
举报
回复
我使用了WSAAsynSelect和Select,都有这个问题。我提高进程和线程的优先级到最高,没有明显的改善。应该跟我应用程序的UI无关,因为我把我的程序最小化,只是来回切换其他应用程序的UI,还是对我的应用程序造成了影响。
另,vista没有问题,如果去掉XP的高级显示特效,问题明显得到改善,我想还是系统调度出了问题。不知有什么方法可以调优
rookieme
2009-02-26
打赏
举报
回复
优先级提高了会假死机的,换一个定时器,vista定时器的实时性高
Wenxy1
2009-02-26
打赏
举报
回复
把接收数据的线程的优先级设置一点.
hemiya
2009-02-26
打赏
举报
回复
[Quote=引用 6 楼 victor_cui 的回复:]
把进程和线程的优先级都提高到实时,并没有明显的改善,真不知道windows的实时有什么用。抓包看数据还是均匀的,应该是进程不能及时得到数据已经来到的通知,不知道有什么方法可以避免
[/Quote]
进程内的线程再高也没有用,这个只是相对进程内的线程优先权.
闪破风浪
2009-02-26
打赏
举报
回复
好精细~
blackcat242
2009-02-26
打赏
举报
回复
是不是你的界面刷新影响到了数据的接收,你是如何接收的?是否跟ui有什么牵连
cnzdgs
2009-02-26
打赏
举报
回复
你的程序是采用什么样的机制来接收数据?
该昵称不能识别
2009-02-25
打赏
举报
回复
最好将接收的线程设置为 THREAD_PRIORITY_TIME_CRITICAL
bitwwzhang130
2009-02-25
打赏
举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
Windows系统中前台线程优先于其它线程,你可以用SetThreadPriority把自己的线程有限级设高一些。
[/Quote]
同意
dxk01
2009-02-25
打赏
举报
回复
和windows的定时精度有关,windows是多任务的,精度难以达到ms级别,如果vista没有的话,就不知道它是如何解决的
百事烟
2009-02-25
打赏
举报
回复
LZ做程序好细,除了XP,我在win2000也遇到同样的问题,不过没考虑,就当它不存在了
加载更多回复(1)
JIDE Desktop Application Framework(桌面应用框架) 开发员技术手册
我们当然也注意到这个
问题
,所以才引进了这样
一个
桌面应用程序框架。 和网页方面的开发不一样,桌面软件开发没有什么优秀的架构。一方面,您们应该听说过JSR 296。它提供
一个
非常简单的框架。不幸的是这个项目随着...
asp.net知识库
一个
时间转换的
问题
,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP...
Window
Server 2012系统安装说明
功能测试或性能测试,一般都要由测试人员搭建测试环境,而服务器环境的搭建更为重要,那么就涉及到服务器操作系统的选择和安装,本课程主要讲解
Window
Server 2012系统安装说明。
Oracle数据库从
Window
XP
迁移到Win7的诡异
问题
我们自己有
一个
做工程计划的ORACLE 的
一个
产品软件叫Primavera Six(简称P6). 所以我需要把P6 的数据库从
XP
迁移到Win7系统。因为以前也做过从
XP
到
XP
系统的P6数据库的迁移成功过,而且是一次成功,没有出什么
问题
的...
解除
Window
s
XP
IIS 10个并发连接数的限制
在
Window
s
Xp
上跑IIS,有个最多10个并发连接数的限制,在做测试...MetaEdit是微软提供的
一个
IIS管理工具,本意是提供给
Window
s 2000的,但是,却可以被
XP
利用 解除10连接限制的步骤: 从微软官方,下载 MetaEdi...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章