Linux 多线程技术.ppt

Linux 多线程技术.ppt

ID:48058357

大小:1.60 MB

页数:25页

时间:2020-01-13

Linux 多线程技术.ppt_第1页
Linux 多线程技术.ppt_第2页
Linux 多线程技术.ppt_第3页
Linux 多线程技术.ppt_第4页
Linux 多线程技术.ppt_第5页
资源描述:

《Linux 多线程技术.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux多线程技术POSIX线程库Pthreads使用fork()创建进程代价昂贵进程间通信方式较复杂操作系统在实现进程间的切换比线程切换更费时使用pthreads库创建线程创建进程比创建线程更快线程间的通信方式更容操作系统对线程的切换比对进程的切换更容易和快速线程的创建#includeintpthread_create(pthread_t*thread,pthread_attr_t*attr,void*(*start_routine)(void*),void*arg);第一个参数为指向线程标识符的指针。第二

2、个参数用来设置线程属性。第三个参数是线程运行函数的起始地址。最后一个参数是运行函数的参数。当创建线程成功时,函数返回0,若不为0则说明创建线程失败,常见的错误返回代码为EAGAIN和EINVAL。前者表示系统限制创建新的线程,例如线程数目过多了;后者表示第二个参数代表的线程属性值非法。一个简单例子#include #include #include #include #includepthread_tntid; void*t

3、hr_fn(void*arg){  printids("newthread:");  return((void*)0); } intmain(){  interr;  err=pthread_create(&ntid,NULL,thr_fn,NULL);  if(err!=0){   printf("can'tcreatethread:%s",strerror(err));   return1;  }  sleep(1);  return0; }编译多线程程序gcc-omypthread-lpthreadmypthread

4、.c线程的退出调用pthread_exit()结束线程执行voidpthread_exit(void*retval);让线程处理程序返回使用pthread_cancel()函数终止其他线程的执行intpthread_cancel(pthread_tthread);向线程t发送取消请求,默认情况下线程thread自己调用pthread_exit(PTHREAD_CANCELED),等待线程结束使用pthread_join()函数等待被创建的线程结束pthread_join()函数会挂起创建线程的线程的执行直到等待到想要等待的子线程函数

5、原型:intpthread_join(pthread_tth,void**thread_return);线程的分离主线程可以不断地创建子线程子线程本身自己有自我回收内存资源的能力函数原型:intpthread_detach(pthread_tth);pthread_detach()和pthread_join()一般情况下不能同时使用获得当前线程的标志pthread_tpthread_self(void);本函数返回本线程的标识符。在LinuxThreads中,每个线程都用一个pthread_descr结构来描述,其中包含了线程状态、

6、线程ID等所有需要的数据结构,此函数的实现就是在线程栈帧中找到本线程的pthread_descr结构,然后返回其中的p_tid项。一个例子#include#include#include#include#defineTHREAD_NUMBER2intretval_hello1=2,retval_hello2=3;void*hello1(void*arg){char*hello_str=(char*)arg;sleep(1);printf("%s",h

7、ello_str);pthread_exit(&retval_hello1);}void*hello2(void*arg){char*hello_str=(char*)arg;sleep(2);printf("%s",hello_str);pthread_exit(&retval_hello2);}intmain(intargc,char*argv[]){inti;intret_val;int*retval_hello[2];pthread_tpt[THREAD_NUMBER];constchar*arg[THREAD_NUMB

8、ER];arg[0]="helloworldfromthread1";arg[1]="helloworldfromthread2";printf("Begintocreatethreads...");ret_val=pthread

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。