查看: 9|回复: 0

c# SpinWait和Sleep的区别

[复制链接]

272

主题

1

回帖

1413

积分

管理员

积分
1413
QQ
发表于 2025-9-10 07:25:21 | 显示全部楼层 |阅读模式
应用程序应该让线程等待而不是切换。


一:Thread.Sleep(1000);

Thread.Sleep()方法:是强制放弃CPU的时间片,然后重新和其他线程一起参与CPU的竞争。


二:Thread.SpinWait(1000);

Thread.SpinWait()方法:只是让CPU去执行一段没有用的代码。当时间结束之后能马上继续执行,而不是重新参与CPU的竞争。


1.png

2.png

状态
触发场景
检测方法
Unstarted
new Thread()后未Start
thread.ThreadState
Running
正在执行代码
VS线程窗口观察
WaitSleepJoin
调用Wait()/Sleep()/Join()
Thread.CurrentThread.Join()
Suspended
已过时的Thread.Suspend()
(标记为Obsolete)
Aborted
Thread.Abort()调用后
(.NET 5+已移除)
Background
IsBackground=true
不影响状态枚举
Interrupt
中断线程



高级模式
B Color Image Link Quote Code Smilies

本版积分规则

关于我们

企业文化

人才招聘

常见问题

建议反馈

合作伙伴

商务合作

新闻媒体

产品服务

客户案例

联系我们

联系电话:14776878570(同VX号)

邮箱:14776878570@163.com(同VX号)

工作时间:周一至周六(早上8点至下午10点)

关注微信公众号

QQ|Archiver|手机版|小黑屋|鸿翔机器人

GMT+8, 2025-9-22 06:18 , Processed in 0.065883 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.