Lei*_*sen 4 c++ android mutex pthreads android-ndk
我在想以下情况在pthread运行时发生:
pthread_mutex_lock(...);
... // <- Thread dies here
pthread_mutex_unlock(...);
Run Code Online (Sandbox Code Playgroud)
换句话说,pthread启动,在某个时候它锁定了一个互斥锁,并且由于某种原因,它在能够调用匹配的解锁函数之前就死了,要么是因为另一个线程杀死了它,要么是因为操作系统本身(在这种情况下是android) ),决定出于某种原因(需要做其他事情等)将其杀死。
如果不调用pthread_kill()或类似的东西,这种情况是否会在android(或其他任何操作系统)上发生?即使您这样做了,避免这种事情发生的正确方法是什么?谢谢。
杀死线程从来就不是很有用。(除非您负担得起SIGKILL /中止整个过程)。
而是使用异常展开堆栈并使用RAII。如果您的进程/ OS变得非常不稳定,以至于随机线程中止,那么我想您还会有其他烦恼,由此造成的混乱不属于进程的责任。
pthread_kill同样,使用进程间同步原语时,所有这些可能会变得更加有趣。不过,在那种情况下,我认为Linux内核可以确保在终止该进程时释放该进程持有的所有锁,无论原因为何