条件变量的使用注意

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

你可能感兴趣的:(环境编程)