C# 线程同步查漏补缺

当线程 A 在等待一个同步构造,另一个线程 B 持有构造一直不释放,那么就会导致线程 A 阻塞。同步构造有用户模式构造和内核模式构造。

用户模式构造通过 CPU 指令来协调线程,所以速度很快。也意味着不受操作系统控制,所以等待构造的线程会不停自旋,浪费 CPU 时间。
内核模式构造通过操作系统来协调线程。内核构造在获取时,需要先转换成本机代码,在转换成内核代码,返回时则需要反方向再转换一次,所以速度会比用户构造慢很多。
因为使用了操作系统来协调线程,所以也有了更加强大的功能。
不同线程在竞争一个资源时,操作系统会阻塞线程,所以不会自旋。
可以实现托管线程和本机线程的同步。
可以跨进程跨 domain 同步。
可以利用 WaitHandle 类的方法实现多个构造的同步或者超时机制。 未央资源网图片

© 版权声明
THE END
感觉文章不错请大大点赞分享一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

图片-未央资源网