java 自旋锁与互斥锁_如何理解自旋锁和互斥锁?

java 自旋锁与互斥锁_如何理解自旋锁和互斥锁?1 Python 多线程 run 方法的中使用 while 循环时 如果在循环体没有使用停止程序机制 会一直运行下去 因此楼主如果想让编码方式得当 可以使用信号量或者其他变量机制通知循环体停止 或者判断队列是否为空 若为空 直接 break 退出循环 2 run 中的死循环不是自旋锁 假如循环体内有资源竞争 给加了个锁 但这种锁也是互斥锁 python 的锁使用的是信号量 semaphore 不是 spinlock

1.Python多线程run方法的中使用while循环时,如果在循环体没有使用停止程序机制,会一直运行下去.因此楼主如果想让编码方式得当,可以使用信号量或者其他变量机制通知循环体停止,或者判断队列是否为空,若为空,直接break,退出循环.

2.run中的死循环不是自旋锁,假如循环体内有资源竞争,给加了个锁,但这种锁也是互斥锁.

python的锁使用的是信号量semaphore,不是spinlock.

// https://svn.python.org/projects/python/trunk/Python/thread_atheos.h

static int fastmutex_lock(fastmutex_t * mutex)

{

atomic_t prev = atomic_add(&mutex->count, 1);

if (prev > 0)

return lock_semaphore(mutex->sem);

return 0;

}

自旋锁:多线程同时访问同一个资源,为防止资源的读取修改不一致设置的一种锁,如果线程访问资源时,已经有线程占有资源,那么后者线程会等待当前线程释放资源,此时后者(不休眠)一直运行CPU检测前者占有资源是否释放,这种后者访问并一直检测资源占有的机制就是自旋锁.

互斥锁:目的和自旋锁一样,但机制不一样,当线程占用资源后,加上锁,后者线程访问时,由于资源被占有,转入休眠(sleep)状态,等资源被释放后,通过信号量通知排队等候的线程。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220817.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:34
下一篇 2026年3月17日 下午7:35


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号