lock函数解决死锁的根本原因就是他会对互斥锁参数进行合适的排序,避免死锁发生,另外如果lock函数无法获取所有的互斥锁时它会堵塞该进程,直到拿到所有互斥锁。
lock_guard函数模板如果仅有互斥锁一个参数的话,执行时它是会尝试拿到锁然后去构造函数,而如果有了adopt_lock那么它默认我以及拿到这个锁(也就是锁住了)了直接会构造不会去尝试拿锁。 guard原理和lock函数差不多,如果我尝试无法获取锁,那么就会堵塞直到可以获取。
lock函数解决死锁的根本原因就是他会对互斥锁参数进行合适的排序,避免死锁发生,另外如果lock函数无法获取所有的互斥锁时它会堵塞该进程,直到拿到所有互斥锁。
lock_guard函数模板如果仅有互斥锁一个参数的话,执行时它是会尝试拿到锁然后去构造函数,而如果有了adopt_lock那么它默认我以及拿到这个锁(也就是锁住了)了直接会构造不会去尝试拿锁。 guard原理和lock函数差不多,如果我尝试无法获取锁,那么就会堵塞直到可以获取。