0

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

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

谢谢!

4

1 回答 1

1

使用 WinAPI 函数SwitchToThread()Sleep(0)在工作线程中,以便将其时间片放弃给系统中的其他线程/进程。或者在 Delphi 中,使用TThread.Yield.

于 2011-04-11T14:18:30.587 回答