偶然发现Windows API函数LeaveCriticalSection存在一个问题,那就是在调用它离开临界区时,会把临界区引用计数减一,而不判断当前线程是不是拥有该临界区,这样就可能引发问题,比如A线程拥有该临界区,但B线程可以调用LeaveCriticalSection来使得其它等待该临界区的线程拥有该临界区,或者调用LeaveCriticalSection次数大于EnterCriticalSection的次数也可能出现误操作而导致不可预知的后果。
LeaveCriticalSection有BUG?,布布扣,bubuko.com
时间: 2024-11-20 13:10:02