用多线程的时候要添加thread库, -lpthread
创建线程 create_thread
如果线程正常退出,不会存在问题。如果线程非正常退出,那么线程中申请的资源就不能正常释放,申请内存造成内存泄漏,锁和信号量等操作容易造成死锁。
利用保护机制可以避免上述问题:
pthread_cleanup_push();
//要保护的操作
pthread_cleanup_pop();
要保护的操作只要有终止的动作(正常退出pthread_exit(),异常终止,return 除外),就会调用相应的回调函数中的清除动作。
回调函数中可以做清理的工作。