为什么不在没有任何理由的情况下使用thread.sleep,并向程序员解释

guy*_*ler 12 c# asp.net

在我们的项目中传递代码时,我遇到了一个Web方法,它在最后有这个代码:

thread.sleep(6000);
return true;
Run Code Online (Sandbox Code Playgroud)

现在,这样做了,所以来自客户端的jQuery ajax调用被延迟,ajax动画将显示更长一点.

这在我眼里是非常错误的.UI和服务器端之间不应该存在这种连接.如果他希望动画花费更长时间,他可以setTimeOut在客户端使用该功能.

这是我的问题:我怎么能向程序员解释为什么这么错?不只是因为客户端/服务器的事情,而是为什么要thread.sleep在网站上打电话?

GvS*_*GvS 17

在推迟的同时:

  • 您正在使用/阻止线程
  • 你正在消耗内存
  • 您有一个开放的TCP/IP连接

这些都是服务器上昂贵的资源

因为:

  • 如果有其他请求进入,则必须创建新线程的概率更大,因此这将使用CPU,内存等,这将延迟此请求.(转到句子的开头).
  • 内存消耗越多,意味着页面错误越多,磁盘队列越大.所有请求需要更长时间
  • TCP/IP连接是有限的资源.


Alb*_*nbo 7

这将最终让位于服务器上的许多被阻止的线程.
假设你有100个请求/秒你有600个线程在睡觉.
这些线程将在堆栈空间中使用1MB RAM,然后浪费600MB的服务器RAM.