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

linux中多线程解析

 2013-09-03 17:04:18 来源:开发学院   
核心提示:}printf("main ... /n");error = pthread_join(tid,(void *)&c);if( error ){printf("new thread is not exit ... /n");return -2;}printf("c-&g
}
printf("main ... /n");

error = pthread_join(tid,(void *)&c);

if( error )
{
printf("new thread is not exit ... /n");
return -2;
}
printf("c->a = %d /n",c->a);
printf("c->b = %s /n",c->b);
sleep(1);
return 0;
}


编译方法:

gcc -Wall pthread_return_struct.c -lpthread


执行结果:

main ...
new thread ...
c->a = 8
c->b = zieckey


例程总结:
一定要记得返回的数据结构要是在这个数据要返回的结构没有释放的时候应用,
如果数据结构已经发生变化,那返回的就不会是我们所需要的,而是脏数据
3、线程标识

函数原型:

#include <pthread.h>
pthread_t pthread_self(void);

pid_t getpid(void);
getpid()用来取得目前进程的进程识别码,函数说明

例程8
程序目的:实现在新建立的线程中打印该线程的id和进程id
程序名称:pthread_id.c

/********************************************************************************************
** Name:pthread_id.c
** Used to study the multithread programming in Linux OS.
** Showing how to get the thread's tid and the process's pid.
** Author:zeickey
** Date:2006/9/16
** Copyright (c) 2006,All Rights Reserved!
*********************************************************************************************/
#include <stdio.h>
#include <pthread.h>
#include <unistd.h> /*getpid()*/

void *create(void *arg)
{
printf("New thread .... /n");
printf("This thread's id is %u /n", (unsigned int)pthread_self());
printf("The process pid is %d /n",getpid());
return (void *)0;
}

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

printf("Main thread is starting ... /n");

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

if(error)
{
printf("thread is not created ... /n");
return -1;
}
printf("The main process's pid is %d /n",getpid());
sleep(1);
return 0;
}


编译方法:


gcc -Wall -lpthread pthread_id.c

执行结果:

Main thread is starting ...
The main process's pid is 3307
New thread ....
This thread's id is 3086347152
The process pid is 3307



介绍linux线程的基本概念,线程间的互斥和同步机制,分析了linuxpthread库的API函数,并结合一个例子阐述多线程编程的核心技术,最后总结出多线程编程应注意的事项。
关键词 线程进程 同步 互斥
中图分类号:TP316 文献标识码:A
1.引言
目前,许多流行的多任务操作系统都提供线程机制,线程就是程序中的单个顺序控制流。利用多线程进行程序设计,就是将一个程序(进程)的任务划分为执行的多个部分(线程) ,每一个线程为一个顺序的单控制流,而所有线程都是并发执行的,这样,多线程程序就可以实现并行计算,高效利用多处理器。线程可分为用户级线程和内核级线程两种基本类型。用户级线程不需要内核支持,可以在用户程序中实现,线程调度、同步与互斥都需要用户程序自己完成。内核级线程需要内核参与,由内核完成线程调度并提供相应的系统调用,用户程序可以通过这些接口函数对线程进行一定的控制和管理。Linux操作系统提供了LinuxThreads库,它是符合POSIX1003.1c标准的内核级多线程函数库。在linuxthreads库中提供了一些多线程编程的关键函数,在多线程编程时应包括pthread.h文件。

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

Tags:linux 线程 解析

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