Linux 多线程程序设计
linux 进程与线程
进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,
进程的目的就是担当分配系统资源(CPU 时间、内存等)的基本单位。Linux 通过 fork 创建出该进程的一
份拷贝,这个新进程拥有自己的变量和自己的 PID,它的时间调度是独立的,它的执行几乎完全独立于父
进程。
线程是进程的一个执行流,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),
Linux 进程创建一个新线程时,线程将拥有自己的栈(因为线程有自己的局部变量),但与它的创建者共
享全局变量、文件描述符、信号句柄和当前目录状态,线程与同属一个进程的其他的线程共享进程所拥
有的全部资源。。
进程可以看成一个资源的基本单位,而线程是程序调度的基本单位,一个进程内部的线程之间共享进程
获得的时间片:进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址
空间)。
关于进程与线程更详尽的说明可以参考网页:
1)https://www.cnblogs.com/skynet/archive/2010/10/30/1865267.html
Linux 下的线程操作函数
线程函数:创建线程、取消线程、退出线程、等待线程、查询线程 ID…
1)int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg);
2)int pthread_cancel(pthread_t thread);
3)int pthread_join (pthread_t tid, void **status);
4)pthread_t pthread_self (void);
5)int pthread_detach (pthread_t tid);
6)void pthread_exit (void *status);
线程间通信函数:
1)线程同步
int pthread_cond_wait(pthread_cond_t *cptr, pthread_mutex_t *mptr);
int pthread_cond_signal(pthread_cond_t *cptr);
2)线程互斥
int pthread_mutex_lock(pthread_mutex_t * mptr);
int pthread_mutex_unlock(pthread_mutex_t * mptr);
熟悉这些函数,是完成多线程程序设计的必要条件,也是时程序更为健壮的前提,下面分别对这些函数
进行说明,你也可以通过 linux 系统的 man 命令查看各函数的说明。
创建线程:pthread_create
项目
备注内容
函数名
pthread_create
函数原形
int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg);
函数功能
创建一个线程
所属头文件
#include <pthread.h>
返回值
0:成功; 大于零的正数:失败