我有一个运行20个线程的Windows服务。每个线程管理远程设备。线程基本上只访问数据库(SQL Server)并通过TCP / IP发送和接收消息。没有花哨的算法或繁重的处理。这个过程在具有大量内存的8核CPU中占80%。
我没有在这个服务上运行一个分析器,但我已经看过代码数百万次......它只是一个while循环,在循环结束时睡眠时间为500ms。因此,循环内的代码在1秒的时间范围内仅执行2次或更少次。
我想知道这个进程是否受I / O约束,为什么这么重的CPU利用率呢?如果我降低流程优先级怎么办?