工作者线程CPU绑定

时间:2011-04-07 02:15:52

标签: windows multithreading delphi cpu-usage worker

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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