pthread
和进程相比,线程是一种非常“节俭”的多任务操作方式。线程间代码段、数据段、堆栈都是共享的。
运行于一个进程中的多个线程,它们之间使用相同的地址空间,而且线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。据统计,一个进程的开销大约是一个线程开销的30倍左右。
线程间方便的通信机制,对于不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过进程间的通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其他线程所用,这不仅快捷,而且方便。
创建线程:
Int pthread_create(pthread_t *tidp, const pthread_addr_t *attr, void *(*start_rtn)(void), void *args)
Tidp:线程id,attr:线程属性(通常为空),start_rtn:线程要执行的函数,args:Start_rtn的参数。
编译:因为pthread 的库不是Linux 系统的库,所以在进行编译的时候要加上(小L)……-lpthread
如:#gcc filename -lpthread
终止线程:如果进程中任何一个线程中调用exit或_exit,那么整个进程都会终止。线程的正常退出方式有:(1)线程从启动例程中返回 return(2)线程可以被另一个进程终止 (3)线程自己调用pthread_exit 函数。
Void pthread_exit(void *rval_ptr) rval_ptr:线程退出返回值的指针。
线程等待:int pthread_join(pthread_t tid, void **rval_ptr) rval_ptr:线程退出返回值的指针。
线程标识:pthread_t pthread_self(void) 功能:获取调用线程的thread identifier,返回值是当前线程的ID
线程终止有两种情况:正常终止和非正常终止。线程主动调用Pthread_exit 或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错而退出,这种退出方式是不可预见的。