1.主线程退出其他线程不退出,主线程应调用pthread_exit;
2.避免僵尸线程:pthread_join、pthread_detach、pthread_create指定分离属性。被join线程可能在join函数返回前就释放完自己的所有内存资源,所以不应当返回被回收线程栈中的值;(因为此时释放的栈空间又可能被重新分配出去,此时得到的返回值没有意义)
3.malloc和mmap申请的内存可以被其他线程释放;
4.应避免在多线程模型中调用fork。一个进程中的某一个线程调用fork函数后也会生成一个子进程,在子进程中只有调用fork的线程存在,其他线程在子进程中均pthread_exit,即子进程只是继承了父进程中调用fork函数的那个线程的资源,遵从读时共享、写时复制原则;(注意尽量避免这样使用,如果一定要使用,建议线程fork后产生的子进程马上exec)
5.信号的复杂语义很难和多线程共存,应避免在多线程引入信号机制。