[发明专利]多线程启动方法无效
申请号: | 201010001510.2 | 申请日: | 2010-01-04 |
公开(公告)号: | CN102117222A | 公开(公告)日: | 2011-07-06 |
发明(设计)人: | 薛永胜 | 申请(专利权)人: | 朗讯科技公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 王波波 |
地址: | 美国新泽西州茉莉山*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多线程 启动 方法 | ||
技术领域
本发明涉及面向对象的编程环境中启动线程的方法,更具体地,涉及一种在面向对象的编程环境中的多线程启动方法。
背景技术
近年来,在软件开发中程序的规模逐渐取向大规模化,为此,可维护性以及再利用性好的面向对象语言引人瞩目。面向对象语言是指一种语言,其描述对象的动作,并将对象的动作及该对象组合起来作为程序来描述。并且,对象是指数据以及操作该数据的过程(方法)被一体化而成的单位。面向对象语言包括有例如C++。C++是在面向过程的编程语言“C”的基础上添加了面向对象编程的支持的编程语言。C++相比于C各种功能都得到了强化。
但是,由于C++语言最初只是设计用于单线程的编程环境,因此多线程机制是在后来作为库添加到C++语言中的。
当前,创建线程需要使用线程库中的pthread_create()库函数。以下是pthread_create()的函数原型和功能描述,该手册来自于solaris9,可以用“man pthread_create”获得。
int pthread_create(pthread_t*thread,const pthread_attr_t*attr,void*(*start_routine,void*),void*arg);
thread:线程id.[输出参数]
attr:指定线程的属性[输入参数]
start_routine:线程的入口[输入参数]
arg:入口函数start_routine的变量地址[输入参数]
说明:
pthread_create()函数用于在进程中创建新的线程,该线程具有由attr规定的属性。如果attr为空,则使用缺省属性。(参见pthread_attr_init(3THR))。即使后期修改了attr所规定的属性,线程的属性也不会改变。在成功完成线程之后,pthread_create()在thread所引用的位置处存储所创建线程的ID。
线程的创建是以arg作为唯一变量来执行start_routine。start_routine返回的结果就像是使用start_routine的返回值作为退出状态,隐式地调用了pthread_exit()库函数。这与调用线程创建函数的主函数main()的主线程是不同的。在main()函数中,当从main()返回时,效果就像是使用main()的返回值作为退出状态,隐式地调用了exit()。
pthread_create()要求一个c类型的函数作为其参数start_routine(),并且一般arg通常是作为一个普通参数被传递给c类型函数start_routine()。
因此,当前,以如下方式进行启动线程:针对每线程,写出独立的C类型的入口函数。这些函数将用作start_routine()。
但是,在需要启动多个类似线程的情况下,编程人员必须写出多个线程的各自入口函数,因此工作量大,而且写出的程序结构不够清晰,难以维护和阅读。
下面的代码示出了创建同时执行耗时函数sleep(10)的五个线程的现有方法:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于朗讯科技公司,未经朗讯科技公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010001510.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:Android系统中的录音数据快速存储方法
- 下一篇:一种光刻胶清洗剂组合物