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

linux中多线程解析

 2013-09-03 17:04:18 来源:开发学院   
核心提示:例程总结:可以看出来main函数中的字符串传入了新建的线程中,例程4:程序功能:向新建的线程传递字符串程序名称:pthread_struct.c/** Name:pthread_struct.c** Used to study the multithread programming in Linux OS*
例程总结:
可以看出来main函数中的字符串传入了新建的线程中。

例程4:
程序功能:向新建的线程传递字符串
程序名称:pthread_struct.c
/********************************************************************************************
** Name:pthread_struct.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 <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>

struct menber
{
int a;
char *s;
};

void *create(void *arg)
{
struct menber *temp;
temp=(struct menber *)arg;
printf("menber->a = %d /n",temp->a);
printf("menber->s = %s /n",temp->s);
return (void *)0;
}

int main(int argc,char *argv[])
{
pthread_t tidp;
int error;
struct menber *b;
b=(struct menber *)malloc( sizeof(struct menber) );
b->a = 4;
b->s = "zieckey";

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

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

编译方法:

gcc -Wall pthread_struct.c -lpthread


执行结果:
menber->a = 4
menber->s = zieckey
pthread is created...

例程总结:
可以看出来main函数中的一个结构体传入了新建的线程中。
线程包含了标识进程内执行环境必须的信息。他集成了进程中的所有信息都是对线程进行共享的,包括文本程序、程序的全局内存和堆内存、栈以及文件描述符。

例程5:
程序目的:验证新建立的线程可以共享进程中的数据
程序名称:pthread_share.c

/********************************************************************************************
** Name:pthread_share_data.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 <stdio.h>
#include <pthread.h>
#include <unistd.h>

static int a=4;
void *create(void *arg)
{
printf("new pthread ... /n");
printf("a=%d /n",a);
return (void *)0;
}

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

a=5;

error=pthread_create(&tidp, NULL, create, NULL);

if(error!=0)
{
printf("new thread is not create ... /n");
return -1;
}

sleep(1);

printf("new thread is created ... /n");
return 0;
}

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

Tags:linux 线程 解析

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