69,371
社区成员
发帖
与我相关
我的任务
分享
int y_tps = 500; /* 每秒发送笔数 */
int y_times = 8; /* 持续时间 */
long y_lslpt;
int y_total = y_tps * y_times;
y_lslpt = 1000000 / y_tps; /* 每次操作应该分得的时间 */
gettimeofday(&tv1, NULL);
while(y_total -- > 0) {
gettimeofday(&tv2, NULL);
dosth();
gettimeofday(&tv3, NULL);
ildiff = (tv3.tv_sec - tv2.tv_sec) * 1000000 + tv3.tv_usec - tv2.tv_usec;
if (ildiff >= y_lslpt) continue;
else usleep(ulstime - y_lslpt);
}
gettimeofday(&tv4, NULL);
long y_res = (tv4.tv_sec - tv1.tv_sec) * 1000000 + tv4.tv_usec - tv1.tv_usec;
/* 这里得出的值要比上面的时间大得多,我也想到通过usleep(ulstime - y_lslpt);中参数在减去一个固定的值来调整,
如sleep(ulstime - y_lslpt - 100);
但如果设置的每秒发送笔数增大,又不对了。这里如果需要精确控制,应该怎么来操作呢?有没有其他好的方法。谢谢
*/