多线程编程进阶.ppt
多线程编程进阶 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望仅执行一次的线程仅执行一次的线程pthread_once_t once =PTHREAD_ONCE_INITint pthread_once(pthread_once_t*once,void(*once_routine)(void);由于函数原型的原因,在设计程序时要保证仅执行一次的线程不需要参数.作用作用初始化动态初始化时,初始化两次可能会出现错误与初始化相对,就是释放资源.比如free 或者pthread_key_delete线程取消线程取消取消的作用:减少资源占用增加系统响应能力取消的状态分取消状态与取消类型线程取消线程取消状态禁用启用PTHREAD_CANCEL_DISABLEPTHREAD_CANCEL_ENABLE类型推迟-PTHREAD_CANCEL_DEFERRED异步-PTHREAD_CANCEL_DELIVEROD可以调用pthread_cancel_setcancelstate()和pthread_cancel_setcanceltype()进行修改.异步取消异步取消线程取消后的资源清理线程取消后的资源清理取消是线程结束状态的一种.它和pthread_exit()退出的线程一样,会调用清理函数voidpthread_cleanup_push(void(*clean_routine)(void*),void*arg);voidpthread_cleanup_pop(int execute);标准标准I/O的同步的同步标准I/O使用互斥量机制进行同步.但并不是使用MUTEX标准I/O有自己的同步函数补遗补遗非阻塞式互斥.pthread_mutex_trylock()phtread_cond_timewait()信号量的丢失问题及对应编程策略简单的加锁算法简单的加锁算法加锁算法是为了让死锁的情况出现的更少trylock链锁层次加锁