欢迎来到天天文库
浏览记录
ID:37594530
大小:135.90 KB
页数:31页
时间:2019-05-25
《多线程与网络编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、多线程与网络编程Linux多线程开发•线程的概念与多线程的应用•Linux与其他操作系统的多线程的实现•Linux的线程库和基本编程模型•多线程的同步与互斥•线程与LWP•线程局部化存储线程的概念和多线程的应用•可执行代码的最小调度单位•线程间共享内存和其他进程资源•更小的创建和切换开销•应用程序中更好的人机交互•更高效的服务器模型••多线程应用的问题:–共享资源的互斥与同步–系统资源的释放与回收–大量并发线程的创建管理Linux与其他操作系统的线程实现•线程的本质•Windows、Solaris等操作系统的线程实现•Linux下的线程实现•Linux线程模型的效率•用户态的
2、线程与内核线程Linux的线程库和基本编程模型•Pthread简介•多线程的创建和销毁–pthead_create–pthread_cancel–pthread_testcancel•线程的资源和线程可取消点–pthread_detach–pthread_join•例1pthread.c多线程的同步与互斥•多线程的执行同步–pthread_exit–pthread_self–例2exit.c•多线程中的各种互斥锁和事件介绍–线程信号量•pthread_mutex_init,pthread_mutex_destroy•pthread_mutex_lock/try_lock,pt
3、hread_mutex_unlock•锁的释放与异常终止•intoldtype;•pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,&oldtype);•pthread_cleanup_push(pthread_mutex_unlock,(void*)&mut);•pthread_mutex_lock(&mut);•…•pthread_mutex_unlock(&mut);•pthread_cleanup_pop(0);例3mutex.c•读写锁的概念--pthread_rwlock•线程自旋锁pthread_spin•例4spin.
4、c•线程事件–pthread_cond_init,pthread_cond_destroy–pthread_cond_signal,pthread_cond_broadcast–pthread_cond_wait,pthread_cond_timedwait–需要先获得一个pthread_mutex_t,并上锁:intpthread_cond_wait(pthread_cond_t*restrictcond,pthread_mutex_t*restrictmutex);用法:pthread_mutex_lock(&mutex);pthread_cond_wait(&cond,
5、&mutex);pthread_mutex_unlock(&mutex);......//process通知事件:intpthread_cond_broadcast(pthread_cond_t*cond);intpthread_cond_signal(pthread_cond_t*cond);例5cond.cpp•线程与LWP–再看线程与进程的关系•ps-elf/aHx•pthread_t与tid的关系•如何获得进程对应的LWP的pid•线程本地化存储–本地化存储的概念–如何使用本地化存储–例6tls.c–errno为例的线程安全和非安全全局变量Linux网络编程•Linu
6、x网络编程简介•网络编程相关的基本函数和数据结构•面向连接与非连接的网络传输•客户端网络编程模型•服务器端网络编程模型•网络数据包的抓取•常用网络调试工具的使用•异步IO•Linux网络编程简介–Linux的网络协议栈–BSD套接字概述–网络编程的常见问题:•网络传输中各种异常情况的处理以及传输可靠性问题•网络应用程序的效率问题以及多线程的管理•面向连接与非连接的数据传输的选择•不同协议栈上的通讯•网络上各种体系结构主机之间的数据交互•网络编程相关的基本函数和数据结构–socket的创建–各协议族的地址格式intconnect(intsockfd,conststructsoc
7、kaddr*serv_addr,socklen_taddrlen);structsockaddr{__SOCKADDR_COMMON(sa_);/*Commondata:addressfamilyandlength.*/charsa_data[14];/*Addressdata*/};#define__SOCKADDR_COMMON(sa_prefix)sa_family_tsa_prefix##familytypedefunsignedshortintsa_family_t;每个协议有自己的地址结构
此文档下载收益归作者所有