WEB开发网
开发学院操作系统Linux/Unix linux中多线程解析 阅读

linux中多线程解析

 2013-09-03 17:04:18 来源:开发学院   
核心提示:This is the 1st pthread,created by zieckey.....两个线程交替执行,此例子介绍了创建线程的方法,linux中多线程解析(2),下面例子介绍向线程传递参数,例程2:功能:向新的线程传递整形值程序名称:pthread_int.c/** Name:pthread_int.c*
This is the 1st pthread,created by zieckey.
....

两个线程交替执行。
此例子介绍了创建线程的方法。
下面例子介绍向线程传递参数。


例程2:
功能:向新的线程传递整形值
程序名称:pthread_int.c
/********************************************************************************************
** Name:pthread_int.c
** Used to study the multithread programming in Linux OS
** Pass a parameter to the thread.
** Author:zeickey
** Date:2006/9/16
** Copyright (c) 2006,All Rights Reserved!
*********************************************************************************************/

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

void *create(void *arg)
{
int *num;
num=(int *)arg;
printf("create parameter is %d /n",*num);
return (void *)0;
}
int main(int argc ,char *argv[])
{
pthread_t tidp;
int error;

int test=4;
int *attr=&test;

error=pthread_create(&tidp,NULL,create,(void *)attr);

if(error)
{
printf("pthread_create is created is not created ... /n");
return -1;
}
sleep(1);
printf("pthread_create is created .../n");
return 0;
}


编译方法:

gcc -lpthread pthread_int.c -Wall


执行结果:

create parameter is 4
pthread_create is created is created ...


例程总结:
可以看出来,我们在main函数中传递的整行指针,传递到我们新建的线程函数中。
在上面的例子可以看出来我们向新的线程传入了另一个线程的int数据,线程之间还可以传递字符串或是更复杂的数据结构。

例程3:
程序功能:向新建的线程传递字符串
程序名称:pthread_string.c
/********************************************************************************************
** Name:pthread_string.c
** Used to study the multithread programming in Linux OS
** Pass a ‘char*‘ parameter to the thread.
** Author:zeickey
** Date:2006/9/16
** Copyright (c) 2006,All Rights Reserved!
*********************************************************************************************/
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

void *create(void *arg)
{
char *name;
name=(char *)arg;
printf("The parameter passed from main function is %s /n",name);
return (void *)0;
}

int main(int argc, char *argv[])
{
char *a="zieckey";
int error;
pthread_t tidp;

error=pthread_create(&tidp, NULL, create, (void *)a);

if(error!=0)
{
printf("pthread is not created./n");
return -1;
}
sleep(1);
printf("pthread is created... /n");
return 0;
}

编译方法:

gcc -Wall pthread_string.c -lpthread


执行结果:
The parameter passed from main function is zieckey
pthread is created...


上一页  1 2 3 4 5 6 7  下一页

Tags:linux 线程 解析

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接