也许I’m misunderstanding关于std :: mutex :: try_lock:
即使互斥锁当前未被任何其他线程锁定,也允许此函数虚假失败并返回false.
这意味着如果没有一个线程锁定该互斥锁,当我尝试try_lock时它会返回false?出于什么目的?
如果没有锁定,try_lock的函数是否会返回false,如果它被锁定则返回true?不确定我的非母语英语是否在欺骗我…
解决方法:
This means that if no one thread has a lock of that mutex, when I try a try_lock, it could return false?
是的,这正是它所说的.
Isn’t the function of try_lock return false if its locked OR true if nobody lock it?
不,try_lock的功能是尝试锁定互斥锁.
但是,失败的方法不止一种:
>互斥锁已经锁定在其他位置(这是您正在考虑的那个)
>某些特定于平台的功能会中断或阻止锁定尝试,并且控制权将返回给可以决定是否重试的调用方.
在POSIX-ish平台上,从POSIX线程继承的常见情况是,信号被传递到当前线程(并由信号处理程序处理),从而中断锁定尝试.
在其他平台上可能存在其他特定于平台的原因,但行为是相同的.