Linux下多线程编程简介(一)
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-28
最近在做移植,碰到了关于多线程操作方面的内容.之前没有太多的在Linux下面进行程序设计,得先从基础学起.下面先讲讲Linux下多线程编程的一些简单设计,完后将我移植中关于这一部分的情况介绍一下.
在LINUX中,一般pthread线程库是一套通用的线程库,是由POSIX提出的,因此他的移植性是非常好的.
创建线程实际上就是确定调用该线程函数的入口点,这里通常使用的函数是pthread_create.在线程创建之后,就开始运行相关的线程函数.在该函数运行结束,线程也会随着退出.这是其中退出线程的一种方法,另外一种退出线程的方法就是调用pthread_exit()函数接口,这是结束函数的主动行为.在这里要注意的是,在使用线程函数时,不要轻易调用exit()函数,这样会使整个进程退出,往往一个进程包含着多个线程,调用了exit()之后,所有该进程中的线程都会被结束掉.因此,在线程中,利用pthread_exit来替代进程中的exit.
一个进程中的数据段是共享的,因此通常在线程退出之后,退出线程所占的资源并不会随着线程的结束而得到释放.正如进程之间可以调用wait()函数来同步终止并释放资源一样,线程之间也有类似的机制,那就是pthread_join函数.pthread_join可以将当前线程挂起,等待线程的结束,这个函数是一个阻塞函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待函数的资源就会被释放.
pthread_create
函数原型: int pthread_create (pthread_t* thread, pthread_attr_t* #include <stdio.h> #include <pthread.h> #include <errno.h> void *pthread_function1(void *arg); void *pthread_function2(void *arg); int main (int argc, char** argv) { pthread_t pt_1 = 0; pthread_t pt_2 = 0; int ret = 0; char message[] = "hello!"; ret = pthread_create(&pt_1, NULL, pthread_function1, (void *)message); if(0 != ret) { perror("pthread1 creation failed!"); } ret = pthread_create(&pt_2, NULL, pthread_function2, (void *)message); if(0 != ret) { perror("pthread2 creation failed!"); } pthread_join(pt_1, NULL); pthread_join(pt_2, NULL); return 0; } void *pthread_function1(void *arg) { printf("This is thread1, %sn", (char*)arg); sleep(3); pthread_exit("Thank you for using thread1"); } void *pthread_function2(void *arg) { printf("This is thread2, %sn", (char*)arg); sleep(3); pthread_exit("Thank you for using thread2"); } |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 网络安装centos5.4下一篇: 磁盘空间监控脚本--简约而不简单(shell编程实例)
关于Linux下多线程编程简介(一)的所有评论