Linux下pthread开发的一些问题

(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的实现

你可能感兴趣的:(Linux下pthread开发的一些问题)