linux下多线程编程时,随着主线程的结束,在整个
进程结束时,仍然有正在运行的子线程,那么这些子线程也会一并结束(注意,主线程的结束并不会影响子线程的结束),但是当子线程中有条件变量正在wait时,会出现~condition_variable_any():Assertion '!pthread_mutex_destroy(&internal_mutex)' failed.的错误,大概意思是说互斥变量在销毁时出现了异常。一个解决的办法是在
进程结束前
,手动对这个条件变量所等待的信号进行notify唤醒操作,直到可以确定在
进程结束前该条件变量所在的线程已经从等待状态转入了运行状态,那么相关变量就能正常析构销毁了。
条件变量的使用注意
最新推荐文章于 2024-05-30 14:48:53 发布