相关疑难解决方法(0)

如何在Windows上使线程睡眠时间小于一毫秒

在Windows上我遇到了一个我从未在Unix上遇到过的问题.这是如何使线程休眠不到一毫秒.在Unix上,您通常有许多选择(睡眠,睡眠和纳米睡眠)以满足您的需求.但是,在Windows上,只有Sleep具有毫秒级的粒度.

在Unix上,我可以使用select系统调用来创建一个非常简单的微秒睡眠:

int usleep(long usec)
{
    struct timeval tv;
    tv.tv_sec = usec/1000000L;
    tv.tv_usec = usec%1000000L;
    return select(0, 0, 0, 0, &tv);
}
Run Code Online (Sandbox Code Playgroud)

如何在Windows上实现相同的目标?

c++ windows winapi sleep

53
推荐指数
10
解决办法
8万
查看次数

在.NET应用程序中需要微秒延迟来限制UDP多播传输速率

我正在C#中编写UDP多播客户端/服务器对,我需要50-100μsec(微秒)的延迟来限制服务器传输速率.这有助于避免重大数据包丢失,还有助于防止磁盘I/O绑定的客户端过载.请不要建议Thread.Sleep或Thread.SpinWait.我不会问我是否需要其中任何一个.

我的第一个想法是使用某种高性能计数器,然后做一个简单的while()循环来检查已用时间,但我想避免这种情况,因为它感觉很笨拙.那不会也会占用服务器进程的CPU利用率吗?

跨平台解决方案的奖励积分,即不是Windows特定的.先谢谢你们!

.net c# udp multicast delay

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

.net ×1

c# ×1

c++ ×1

delay ×1

multicast ×1

sleep ×1

udp ×1

winapi ×1

windows ×1