多线程的好处: 线程是一种非常“节俭”的多任务操作方式。在linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来 维护它的代码段、数据段和堆栈段,这是一种“昂贵”的多任务工作方式。 线程间方便通信。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过进程间通信的方式进行,这种方式不仅费时 ,而且很不方便。由于同一进程下的线程之间共享数据空间,一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。 多线程使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。 改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。 int pthread_create(pthread_t* tidp, const pthread_attr_t *attr, void* (*start_rtn)(void), void *arg) pthread的库不是linux系统的库,在编译时要加上-lpthread。gcc filename -lpthread 如果进程中任何一个线程中调用exit或_exit,那么整个进程都会终止。线程的正常退出方式: 线程从启动例程中返回 线程可以被另一个进程终止 线程自己调用pthread_exit函数 void pthread_exit(void *rval_ptr) int pthread_join(pthread_t tid, void **rval_ptr)阻塞调用线程,直到指定的线程终止。 pthread_t pthread_self(void)获取调用线程的标识。 线程的终止有两种情况: 主动调用pthread_exit或者从线程函数中return都将使线程正常退出,这是可预见的。 非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。
浙公网安备 33010602011771号