线程同步和互斥

同步,意味着线程之间要密切合作,按照一定的顺序来执行任务。比如说,线程 A 先执行,线程 B 再执行。
互斥,意味着线程之间要抢占资源,同一时间只能有一个线程访问共享资源。比如说,线程 A 在访问共享资源时, 线程 B 不能访问。

互斥和同步在时间上有要求吗?  有。
互斥的核心是保证同一时刻只有一个线程能访问共享资源。 同步强调的是线程之间的执行顺序,特别是在多个线程需要依赖于彼此的执行结果时。

自旋锁

是指当线程尝试获取锁时,如果锁已经被占用,线程不会立即阻塞,而是通过自旋,也就是循环等待的方式不断尝试获取锁。

自旋锁的优点是可以避免线程切换带来的开销,缺点是如果锁被占用时间过⻓,会导致线程空转,浪费 CPU 资 源。

默认情况下,自旋锁会一直等待,直到获取到锁为止。在实际开发中,需要设置自旋次数或者超时时间。如果超过阈值,线程可以放弃锁或者进入阻塞状态。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务