Linux下的线程编程
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-13
线程:是进程中的一个实体,是被系统独立调用和分派的基本单位.线程基本上不拥有系统资源,共享进程所拥有的全部资源. 线程与进程的比较: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行 (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源. (4)系统开销:在创建或撤消进程时,系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销. Linux实现了POSIX的无名信号量,主要用于线程间的同步和互斥,我在这里介绍几个常用函数. pthread_create() #include <pthread.h>一共需要四个参数传递给 pthread_create 函数,调用成功返回 0,否则返回其他值.
#include <pthread.h>pthread_join() #include <pthread.h>线程同步 信号量同步 信号量函数名字都以 sem_ 开头,线程中使用的基本信号量函数有四个. 创建信号量 sem_init() #include <semaphore.h>
对由 sem 指定的信号量进行初始化,设置好它的共享项,给它一个整数
类型的初始值. pshared 参数控制着信号量的类型,如果其值为0,则
表示它是当前进程的局部信号量;否则,其他进程就可以共享这个信号量.
sem_wait() 和 sem_post()
#include <semaphore.h> sem_post() 给信号量的值加上一个 "1"; sem_wait() 给一个信号量减
去 "1",永远等待信号量的值不为零才执行这个动作.
清理信号量 sem_destroy()
#include <semaphore.h>记住,初始化信号量一般设置其值为0,等待的线程如果需要其他“线程”先执行,以 便得到自己想要的数据,就使用 sem_wait() 函数等待.别的线程在准
备好数据后,就使用 sem_post() 函数增加信号量的值.注销创建
的信号量是个好习惯!
|
|||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于Linux下的线程编程的所有评论