如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
线程编程线程是进程中程序执行的最小单位。是并发执行的多道执行路径,他们共享一个进程的资源。线程通常都是在一个进程中创建的。线程不能独立于进程单独存在。进程是系统中程序执行和资源分配的基本单位。每个进程都有自己的数据段、代码段和堆栈段。2.Linux线程的实现创建线程:原进程称为主线程。编译时要加上-lpthread静态链接库。.text+地址:说明不是因为没包含头文件,而是因为没有找到函数体。pthread线程库不是Linux系统标准的API。进程间的通信方式同样适用于线程间通信。举例说明:1、创建线程。2、给线程传递参数。3、线程对全局变量操作。1.静态链接库这类库的名字是libxxx.a;利用静态链接库编译成的文件比较大,因为整个链接库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态链接库改变了,那么你的程序必须重新编译。2.动态链接库这类库的名字是libxxx.so;相对于静态链接库,动态链接库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用该链接库里的相应函数,因此动态链接库所产生的目标文件比较小。由于链接库没有被整合进你的程序,而是程序运行时动态的调用,所以程序的运行环境中必须提供相应的库。动态链接库的改变并不影响你的程序,所以动态链接库的升级比较方便。linux系统有几个重要的目录存放相应的函数库,如/lib/usr/lib。线程的退出:1.线程运行结束自动退出。2.使用pthread_exit退出。3.执行exit(_exit)退出。当执行了exit,则进程退出,此时,进程中的所有线程也都将无条件退出。如果线程中调用exit(_exit),那么这个进程以及这个进程中的线程都退出。pthread_exit函数说明pthread_join函数格式pthread_exit()返回信息在实际工作的使用如下:在一个线程中使用malloc,申请一段内存空间,将返回的信息数据保存在这段内存中。在使用pthread_join的函数中,获取这个地址,从中取出信息,然后使用free释放这段内存空间。3.线程的访问控制互斥锁因为使用信号量功能强,但是很繁琐。所以引入了互斥锁,用于实现一般简单的互斥操作。互斥锁(mutex)是一种简单的加锁方法,用来实现对共享资源的存取。这个互斥锁只有两个状态:上锁和解锁。可以把互斥锁看做某种意义上的全局变量。在同一时刻只能有一个线程掌握某个互斥锁上锁,拥有上锁状态的线程能够对共享资源进行操作。若其他线程希望上锁一个已经上锁的互斥锁,那么该线程就会挂起,直到上锁的线程释放掉互斥锁为止。互斥锁初始化:pthread_mutex_init互斥锁的操作:trylock函数是非阻塞调用模式,也就是说,如果互斥锁没被上锁,trylock函数将把互斥锁上锁,并获得对共享资源的访问权限;如果互斥锁被上锁了,trylock函数将不会阻塞而直接返回EBUSY,表示共享资源处于忙状态.