VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1006|回复: 7

[交流] 有个时间问题,希望广大道友前来交流

[复制链接]
47_avatar_middle
最佳答案
0 
在线会员 发表于 2016-3-25 17:37:55 | 显示全部楼层 |阅读模式
3驿站币
   有个客户端,在send线程里面需要定时发送数据,个人感觉sleep 时间一长会有延迟和不准的情况,后来用time_t 加上固定值判断,这样写


                time_t bTime;
                time_t eTime;
                eTime = bTime + 300    //300  = 5分钟
                        while (true)
                        {
                                time(&bTime);
                                if (bTime >= eTime)
                                {
                                        break;
                                }
                        }


这样的死循环判断,但是运行后CPU 资源会一上来就50%,道友们都知道,如果加上 sleep(1),马上就下来了,但是我不能用sleep 时间有延迟   



有什么好办法,既不占用cpu资源还能准确的获取我指定的间隔时间





上一篇:tcp/ip服务器端给客户端发送文件失败,各位大牛帮忙看看
下一篇:关于屏幕截图、怎么把图片压缩啊、截得图片好几M
24_avatar_middle
最佳答案
0 
在线会员 发表于 2016-3-25 17:55:39 | 显示全部楼层
本帖最后由 jingjinghack 于 2016-3-25 17:58 编辑

void delay(int time)
{
        int i;
        char j;
        for(i = 0; i< time; i++)
                for(j = 0; j<240;j++)
                {
                        asm("NOP");
                        asm("NOP");
                        asm("NOP");
                }
}
试试这个
05_avatar_middle
最佳答案
0 
在线会员 发表于 2016-3-27 20:21:37 | 显示全部楼层
在windows里面,Sleep(time),这个time是毫秒,你知道毫秒多短吗 ?  你什么程序需要这么精确?  你sleep 10秒。可能相差一秒,你既然都说了 大于5分钟,你完全可以sleep(20) , 这样来加入进去,为什么一定要直接sleep(五分钟)
47_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-3-27 23:21:42 | 显示全部楼层
不是,客户端指定时间向服务器发送数据,如果用sleep,时间一长,本来我要20秒发一次,结果变成22秒,这样就有延迟,2楼的方法似乎不行,你的time 是什么单位,我写了33300都没什么延迟
51_avatar_middle
最佳答案
83 
online_admins 发表于 2016-3-28 15:51:08 | 显示全部楼层
softcheng 发表于 2016-3-27 23:21
不是,客户端指定时间向服务器发送数据,如果用sleep,时间一长,本来我要20秒发一次,结果变成22秒,这样 ...

本身网络状况不稳定,发送和接收都可能会有延迟,所以,这个时间不一定能控制的很好
47_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-3-29 10:45:41 | 显示全部楼层
所以要把延迟控制在合理范围,或者一旦出现延迟要做相应处理,还有,timegetevent 多媒体定时器精度是不是相对高些,据说他是独立一个线程,也不是消息机制,所以设定好时时间后一般不会有什么延迟
51_avatar_middle
最佳答案
83 
online_admins 发表于 2016-3-29 11:02:35 | 显示全部楼层
softcheng 发表于 2016-3-29 10:45
所以要把延迟控制在合理范围,或者一旦出现延迟要做相应处理,还有,timegetevent 多媒体定时器精度是不是 ...

我指的不是系统时间精度的问题,而且socket数据收发的时候网络有延迟,比如网络状况好的时候发送500k的数据用时20ms,网络状况不好的时候发送500k的数据用时500ms,我指的是这个意思
47_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2016-3-29 11:55:41 | 显示全部楼层
这个没关系,服务端会处理发送数据的延迟,只要客户端本身减少延迟就行,另外,syc觉得多媒体定时器是不是更精确些
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-11-29 15:54

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表