
互斥锁
文章平均质量分 60
金色熊族
这个作者很懒,什么都没留下…
展开
-
理解原子变量之一:从互斥锁到原子变量,最粗浅的认识
多线程编程对于程序员来说,是一项非常重要的技能。在C++11标准问世之前,C++标准是不支持多线程的。在C++11出台前,如果你想在linux平台进行多线程编程,就要使用linux的多线程库pthread,而pthread是按照POSIX标准实现的,与C++标准无关。在C++11标准下,你可以使用std::thread,实现多线程编程。但是,多线程编程涉及的不仅仅是thread,编程者也要考虑资源竞争的情形,这就涉及到互斥锁、信号量等。这些也包含在c++11中。原创 2024-11-01 13:34:34 · 883 阅读 · 0 评论 -
轻量锁与重量锁的思考
不论是linux还是windows,操作系统都提供轻量和重量两种锁。在windows上,CRITICAL_SECTION(临界区)是轻量的,Mutex是重量的;在linux上,futex是轻量的,而pthread_mutex_t是重量的。根据Jeff Preshing 在他的博客Always Use a Lightweight Mutex上的测试,windows上的临界区比mutex快~25倍。这是因为mutex的调用要进入内核,而临界区不会。当然,临界区的劣势是它不可以在进程之间协调。但是,只要你的程序是原创 2021-11-28 18:48:54 · 302 阅读 · 0 评论 -
自旋锁和互斥锁的区别
转自https://www.jianshu.com/p/a7f349ddcf82自旋锁是一种互斥锁的实现方式而已,相比一般的互斥锁会在等待期间放弃cpu,自旋锁(spinlock)则是不断循环并测试锁的状态,这样就一直占着cpu。互斥锁:用于保护临界区,确保同一时间只有一个线程访问数据。对共享资源的访问,先对互斥量进行加锁,如果互斥量已经上锁,调用线程会阻塞,直到互斥量被解锁。在完成了...转载 2020-04-24 21:55:00 · 607 阅读 · 0 评论 -
自己对互斥和同步的理解
拿下棋做例子。红棋走棋的时候,黑棋不能走,这是互斥;但是红棋走一步,下一步必须黑棋走,反之亦然,这是同步。原创 2016-11-19 15:32:51 · 695 阅读 · 0 评论