(1) 线程也是资源,注意使用pthread_join和pthread_detach回收内存
(2) mutex会将等待加锁的线程形成一个队列,spinlock会不断的查询锁,类似于nonblock的处理
(3) pthread_cond_wait后,将会释放掉锁,供另外一个线程操作,操作完才会用pthread_cond_sign唤醒, pthread_cond_wait必须要和mutex一起使用
(4) 视情况能否使用读写锁
(5) 尽量使用pthread_cond_waittime取代pthread_cond_wait的死等,而且pthread_cond_wait在处理退出信号的时候存在问题
(6) 锁中的代码尽量的短小,防止I/O等相当耗时的操作
(7) 尽量使用环形消息队列或者缓冲
(8) 尽量使各个线程的操作没有相互依赖性,形成流水线操作,各个线程实现不同的任务
(9) 减少栈大小可以增加线程数
(10) pthread_join是处理处于可join的线程,必须由pthread_join调用线程来回收资源
pthread_detach是处理处于不可join的线程,线程结束后自动回收资源
(11) 注意exit, pthread_exit, 特别是在主线程中的区别。exit是整个的进程的退出,管理线程会通知所有线程的退出。
pthread_exit只是单个线程的退出,不是进程
(12) pthread_mutex一定要先用pthread_mutex_init初始化,和destroy析构
(13) 注意LinuxThread的实现