Windows 工作线程CPU绑定

Windows 工作线程CPU绑定,windows,multithreading,delphi,cpu-usage,worker,Windows,Multithreading,Delphi,Cpu Usage,Worker,我有一个TCP/IP线程(主线程)正在端口中侦听。当TCP/IP请求到来时,我会生成一个线程来处理该请求。如果工作线程是CPU绑定的(想象一个从1到1000000的循环什么都不做),我就不能接收另一个tcp/ip请求。SO不会给侦听线程一个切片时间 我怎样才能解决这个问题?这是一个实施问题吗?当tcp/ip数据包进入tcp/ip堆栈时,SO必须给侦听线程一个切片时间吗 谢谢 在工作线程中使用WinAPI函数或,以便将其时间片交给系统中的其他线程/进程。或者在Delphi中,使用。您正在使用哪些组

我有一个TCP/IP线程(主线程)正在端口中侦听。当TCP/IP请求到来时,我会生成一个线程来处理该请求。如果工作线程是CPU绑定的(想象一个从1到1000000的循环什么都不做),我就不能接收另一个tcp/ip请求。SO不会给侦听线程一个切片时间

我怎样才能解决这个问题?这是一个实施问题吗?当tcp/ip数据包进入tcp/ip堆栈时,SO必须给侦听线程一个切片时间吗


谢谢

在工作线程中使用WinAPI函数或,以便将其时间片交给系统中的其他线程/进程。或者在Delphi中,使用。

您正在使用哪些组件?我使用Delphi standart library的TThread。如果侦听器线程和工作线程具有相同的优先级,则不可能发生您所描述的情况-操作系统将执行侦听器线程,并且在工作线程烧掉您的CPU或某些内核时,它将能够接受其他请求。确保您实际上是在另一个线程中执行辅助任务!否则,在工作完成之前,您不会在侦听器套接字上调用accept()。也许您应该从侦听器线程添加一些代码?这就是解决方案吗?程序员负责在线程内创建代码。所以,如果他执行while(true)循环,我就无法接收其他TCP/IP连接。这是否意味着你无法控制CPU绑定线程的工作?如果是这样,那就太糟糕了。可能提高您的监听线程的优先级会有所帮助。