Linux 线程编程.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 线程编程

* * * * * * * * POSIX API无名信号量(销毁) int sem_destroy(sem_t * sem) 被注销的信号灯sem要求已没有线程在等待该信号灯,否则返回-1,且置errno为EBUSY。除此之外,LinuxThreads的信号灯注销函数不做其他动作。 POSIX API: 无名信号量(点灯和灭灯) 用完了,加一: int sem_post(sem_t * sem) 要使用,减一: int sem_wait(sem_t * sem) int sem_trywait(sem_t * sem) 获取灯值: int sem_getvalue(sem_t * sem, int * sval) 注意: sem_post()是唯一能用于异步信号处理函数的POSIX异步信号安全的API Posix API: 有名信号量 sem_open() sem_close() sem_unlink() Pthread API 其它 线程ID: pthread_t pthread_self(void) (type: unsigned long int) 仅执行一次: int pthread_once(pthread_once_t *once_control, void (*init_routine) (void)) 参考 SUN的多线程编程指南: /solaris/819-7051-10.pdf IBM DW: POSIX 线程编程指南 /developerworks/cn/linux/thread/posix_threadapi/part1/index.html * * * * * * * * * * * * * * * * * * * * * * * * * * * Linux 线程编程 liang 2010.11.6 Outline Multithreads programming on Linux Concept/API/Usage/Notes Threads: concept 线程和进程 进程是资源管理的最小单位(CPU, MEM,FILES, SIGNALS,IO,..) – 静态 线程是程序执行的最小单位,是包含在进程中的一种实体(指令IR,stack registers) ?把进程拆分几块来执行 --执行态 引入线程的目的 适应SMP 提高应用程序响应 减少上下文切换时的开销 线程间通信和数据共享 改善程序结构 进程 线程 Threads: concept(2)线程共享数据 线程共享的环境包括: 进程代码段 进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯) 进程打开的文件描述符 信号的处理器 进程的当前目录 进程用户ID与进程组ID。 Threads: concept(2)线程独立数据 线程ID 寄存器组的值 由于线程间是并发运行的,每个线程有自己不同的运行线索,当从一个线程切换到另一个线程上时,必须将原有的线程的寄存器集合的状态保存,以便将来该线程在被重新切换到时能得以恢复。 线程的堆栈 堆栈是保证线程独立运行所必须的。 线程函数可以调用函数,而被调用函数中又是可以层层嵌套的,所以线程必须拥有自己的函数堆栈,使得函数调用可以正常执行,不受其他线程的影响。 错误返回码/线程优先级/信号屏蔽码(但共享信号处理函数) PThreads API POSIX 线程接口 The Pthreads API is defined in the ANSI/IEEE POSIX 1003.1 - 1995 standard. This standard is not freely available on the Web - it must be purchased from IEEE. 创建线程 int pthread_create(pthread_t * thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg) Pthread API – 创建线程 * Attributes for threads. */ typedef struct __pthread_attr_s { int __detachstate; // 可同步的(JOINABLE)或可脱离的DETACH int __schedpolicy; //主要包括SCHED_OTHER(正常、非实时)、SCHED_RR(实时、轮转法)和SCHED_FIFO(实时、先入先出)三种,缺省为SCHED_OTHER,后两种调度策略仅对超级用户有效

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档