Linux线程——hou.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux线程——hou

线程理论基础 多线程程序设计 线程同步 为什么有了进程,还有引入线程? 使用多线程有什么好处? 线程理论基础 多线程程序设计 线程同步 创建线程 编译 终止线程 线程退出 线程等待 线程标识 清除 清除 清除 清除 线程理论基础 多线程程序设计 线程同步 线程同步 互斥量 互斥量 创建 创建 加锁 解锁 互斥量PK信号量 信号量 信号量 信号量 进程多线程编程,因为无法知道哪个线程会在哪个时候对共享资源进行操作,因此让如何保护共享资源变得复杂,通过下面这些技术的使用,可以解决线程之间对资源的竞争。 1、互斥锁(互斥量)Mutex 2、信号量Semaphore 互斥锁的操作主要包括以下几个步骤: 互斥锁初始化:pthread_mutex_init 互斥锁上锁:pthread_mutex_lock 互斥锁判断上锁:pthread_mutex_trylock 互斥锁解锁:pthread_mutex_unlock 消除互斥锁:pthread_mutex_destroy pthread_mutex_t number_mutex; int globalnumber; void write_globalnumber( ){ pthread_mutex_lock (number_mutex); globalnumber++; pthread_mutex_unlock(number_mutex);} int read_globalnumber(){ int temp; pthread_mutex_lock (number_mutex); temp = globalnumber; pthread_mutex_unlock (number_mutex); return(temp);} 信号量其实就是一个计数器。 通过操作系统中的PV 原语对其进行操作。 每一次调用wait操作将会使sem值减一,而如果sem0,则wait操作将会阻塞。(P操作) 每一次调用post操作将会使sem值加一。 (V操作) Linux 多线程程序设计 主讲人:侯健 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT、Linux。 多线程 多线程 优点 使用多线程的理由之一 和进程相比,它是一种非常节俭的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种昂贵的多任务工作方式。 运行于一个进程中的多个线程,它们之间使用相同的地址空间,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。 据统计,一个进程的开销大约是一个线程开销的30倍左右。 优点 优点 使用多线程的理由之二 线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。 除了以上所说的优点外,多线程程序作为一种多任务、并发的工作方式,还有以下的优点:  1) 提高应用程序响应。使用多线程技术,将耗时长的操作(time consuming)置于一个新的线程。   2) 使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。  3) 改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。 Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。 多线程 tidp:线程标识符(唯一性) attr:线程属性(NULL) start_rtn:线程要执行的函数 arg: start_rtn的参数 int pthread_create(pthread_t *tidp, const pthread_attr_t *attr,void *(*start_rtn),void *arg) #include pthread.h 因为pthread的库不是Linux系统的库,所以在进行编译的时候要加上 -lpt

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档