- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在一个进程中多个执行路线 一个进程内部的一个控制序列 所有进程都至少有一个执行线程 为什么有了进程,还要引入线程? 使用多线程有什么好处? 创建线程 编译 终止线程 线程退出 线程等待 线程同步 互斥量 互斥量 创建 释放 int pthread_mutex_destroy(pthread_mutex_t *mutex) 作用:释放互斥量 返回:成功返回0,失败返回错误码 加锁 int pthread_mutex_lock(pthread_mutex_t *mutex) int pthread_mutex_trylock(pthread_mutex_t *mutex) 作用:对互斥量(共享资源)进行加锁 lock 阻塞,当已有锁,就等待 trylock 不阻塞,当已有锁返回错误 解锁 练习 两个线程间共享全局变量数据,用互斥量实现线程对数据访问的同步 互斥量与信号量 信号量 信号量 2、P操作 int sem_wait(sem_t *sem) int sem_trywait(sem_t *sem) 3、V操作 int sem_post(sem_t *sem) 信号量 练习 编写程序,用信号量实现生产者和消费者关系,创建两个线程,一个线程生产,一个线程消费 thread_create.c void *thread_fun(void *arg) { printf(“this is thread 1\n”); return 0 } int main() { pthread_t tid; int ret = pthread_create(tid,NULL,thread_fun,NULL); return 0; } thread_string.c char msg[16]=“hello thread”; void *thread_fun(void *arg) { printf(“this is thread recv= %s\n”, msg); strcpy(msg,”hello main”); return 0 } int main() { pthread_t tid; int num=3; int ret = pthread_create(tid,NULL,thread_fun,NULL); sleep(1); printf(“this is main recv = %s\n”,msg); return 0; } thread_int.c void *thread_fun(void *arg) { printf(“this is thread num = %d\n”,*arg); *arg = 8; return 0 } int main() { pthread_t tid; int num=3; int ret = pthread_create(tid,NULL,thread_fun,num); printf(“int the main num = %d\n”,num); return 0; } 练习 创建进程,验证其和进程间的数据共享以及私有 如果进程中任何一个线程调用exit或_exit,那么整个进程都会终止。 线程的正常退出方式有: 使用return返回, 使用pthread_exit这个函数。 void pthread_exit(void *ret) 作用:终止调用的线程 并返回一个指向某个对象的指针.绝不能返回一个指向局部变量的指针 int pthread_join(pthread_t tid,void**pva) 作用:阻塞调用线程,等待指定线程终止,获取线程返回 pva 线程退出的返回值的指针 返回:成功返回0,失败返回错误码 进程多线程编程,因为无法知道哪个线程会在哪个时候对共享资源进行操作,因此让如何保护共享资源变得复杂,通过下面这些技术的使用,可以解决线程之间对资源的竞争。 1、互斥锁(互斥量)Mutex 2、信号量Semaphore 互斥锁的操作主要包括以下几个步骤: 互斥锁初始化:pthread_mutex_init 互斥锁上锁:pthread_mutex_lock 互斥锁判断上锁:pthread_mutex_trylock 互斥锁解锁:pthread_mutex_unlock 消除互斥锁:pthread_mutex_destroy int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr) 作用:创建一个互斥量 mutex 创建成
您可能关注的文档
- 1.1搭建php项目开发环境.ppt
- Linux基本操作的实验报告.ppt
- linux基础及常用命令.ppt
- 1.1果酒、果醋的制作.ppt
- Linux基础操作命令.ppt
- Linux基础教程(清华课件)-第11章账号管理.ppt
- 1.1正弦定理-2.ppt
- Linux基础教程(清华课件)-第2章处理机管理.ppt
- Linux基础知识与常用命令.ppt
- 1.1线性回归方程的求法.ppt
- 吉安县公开招聘专职文明实践员笔试备考试题及答案解析.docx
- 2025重庆枫叶国际学校招聘教师笔试备考试题及答案解析.docx
- 游机队电玩自制联网教程-tplink.pdf
- 2025重庆新华出版集团招聘1人笔试模拟试题及答案解析.docx
- 2025宜宾高新丽雅城市产业发展有限公司公开招聘笔试模拟试题及答案解析.docx
- 2025云南保山市龙陵县勐糯镇人民政府招聘合同制专职消防员1人笔试模拟试题及答案解析.docx
- 11.1生活中常见的盐 九年级化学人教版下册.pptx
- 6.1法律保护下的婚姻 高二政治《法律与生活》课件(统编版选择性必修2)(新版).pptx
- 文昌市中小学教师校园招聘29人笔试模拟试题及答案解析.docx
- 10.1.5 常见的酸和碱(第5课时)课件-九年级化学人教版下册.pptx
文档评论(0)