在linux系统中建立线程实际上非常简单,主要有两种方法:两个函数 pthread_CREATE 和 clone。
成都创新互联-专业网站定制、快速模板网站建设、高性价比瑞安网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式瑞安网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖瑞安地区。费用合理售后完善,十载实体公司更值得信赖。
使用 pthread_create 方法建立线程
使用 pthread_create 是最常见的创建线程的方法,主要是因为它的语法简单只需几行代码。它的原型如下:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
它的参数介绍如下:
1、thread 创建成功后,返回线程 ID。
2、attr 指定线程属性,通常设置为 NULL。
3、 start_routine 为线程启动时运行的函数或程序段。
4、arg 传递给 start_routine 的参数。
例子:
#include
#include
void *print_message_function( void *ptr );
main()
{
pthread_t thread1, thread2;
const char *message1 = “Thread 1”;
const char *message2 = “Thread 2”;
int iret1, iret2;
iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1);
iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2);
pthread_join( thread1, NULL);
pthread_join( thread2, NULL);
printf(“Thread 1 returns: %d\n”, iret1);
printf(“Thread 2 returns: %d\n”, iret2);
exit(0);
}
void *print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
printf(“%s \n”, message);
}
使用 clone 方法建立线程
clone是Linux内核规定新线程拥有和父进程完全相同的地址空间时,可以使用它来创建线程。它的原型如下:
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg, int *parent_tid, struct user_desc *tls, int *child_tid);
它的参数介绍如下:
1、fn 创建线程时执行的函数指针。
2、child_stack 子线程使用的堆栈指针。
3、flags 指定进程地址空间的复制方式。
4、arg 参数传递给 fn。
5、parent_tid 指向父线程 ID 的指针。
6、tls 指定注册的 TLS 段。
7、child_tid 返回子线程 ID 的指针。
例子:
#include
#include
#include
#define STACK_SIZE 1024 * 64
char child_stack[STACK_SIZE];
int thread_function(void *param)
{
printf(“I’m new thread!\n”);
return 0;
}
int main()
{
clone(thread_function, child_stack + STACK_SIZE,
CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | CLONE_SYSVSEM,
NULL);
printf(“Main thread finished!\n”);
return 0;
}
总而言之,在Linux环境下建立线程使用pthread_create和clone两种方式,只要读者在使用时分清楚两种函数功能,就可以成功编写出需要的多线程程序。
创新互联服务器托管拥有成都T3+级标准机房资源,具备完善的安防设施、三线及BGP网络接入带宽达10T,机柜接入千兆交换机,能够有效保证服务器托管业务安全、可靠、稳定、高效运行;创新互联专注于成都服务器托管租用十余年,得到成都等地区行业客户的一致认可。
文章标题:Linux环境下如何建立线程(linux建立线程)
本文路径:http://www.mswzjz.com/qtweb/news38/195438.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联