c# – Thread.Sleep(n)的使用是否会导致性能问题?
我正在为我的项目使用Thread.Sleep(n).我听说Thread.Sleep会导致性能问题但不确定.
我的要求是:
下面我提供了我在不同场景中使用Thread.Sleep(n)的示例代码: Thread.Sleep(1000 * 60 * 5); //-------waiting for 5 minutes var isDownloaded = false; try { var attempt = 0; while (attempt < 11) { isDownloaded = TryDownloading(strPathToDownload,strFileToDownload); if (isDownloaded) break; attempt++; if (attempt < 6) Thread.Sleep(1000 * 60 * 5); //--------waiting for 5 minutes else { if (attempt < 11) Thread.Sleep(1000 * 60 * 60); //-------waiting for 1 hour else break; } } } 在上面的代码我试图下载最多11次下载尝试的文件.最初它等待5分钟,然后尝试下载第一次尝试的文件,如果失败,则尝试接下来的5次尝试,每次尝试间隔5分钟.如果他们在前六次尝试中失败,则接下来的5次尝试,每次尝试间隔1小时. 所以我们决定在我们的控制台应用程序中使用Thread.Sleep来延迟时间. 这会导致任何问题或性能问题吗? 如果Thread.Sleep(n)导致性能问题,那么这将是一种更好的替代方式,而不是使用Thread.Sleep(n)? 最后,MSDN是否建议Thread.Sleep(n)有害或不应该使用? 解决方法
这绝对没问题.以下是睡眠费用:
>你保持一个线程占用.这需要一点点记忆. 就这样. 然而,糟糕的是忙于等待或进行轮询循环,因为这会导致实际的CPU使用率.只是在睡眠或等待中花费时间不会产生CPU使用率. TL; DR:使用睡眠进行延迟,不要使用睡眠进行轮询. 我必须说,对睡眠的厌恶有时只是训练有素的反射.在谴责睡眠之前,一定要分析具体的用例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |