POSIX多线程编程

2009-03-09

POSIX多线程(Pthreads)是一个可移植的多线程库,在设计上提供了在多个操作系统平台上使用一致的程序设计接口的功能,现已是 Linux操作系统中多线程接口的标准,并广泛使用在大多数UNIX平台上,还有一个针对Windows的开源版本pthreads-win32。

创建线程

POSIX多线程库中创建线程的函数是pthread_create():

pthread_create (

pthread_t *restrict tidp, //线程ID

const pthread_attr_t *restrict attr, //线程属性(NULL=none)

void *(*start_rtn)(void), //线程执行的函数

void *restrict arg //传递到函数中的参数

);

例如:

#include

#include

#include

struct person{

char *name;

int age;

};

//线程执行的操作

void doSomething(struct person *p){

printf(”I am %s, %d years old.\n”,p->name,p->age);

}

//主函数

int main(){

int i;

char *name=”Oscar Tang”;

for(i=0;i<10;i++){

struct person p;

p.name=name;

p.age=i;

pthread_t pid;

pthread_create(&pid,NULL,(void *)doSomething,&p);

}

}

编译

由于pthread库不是Linux系统默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程时,在编译时要加上-lpthread参数:

M-OSCAR | Powered by Blogger | Entries (RSS) | Comments (RSS) | Designed by MB Web Design | XML Coded By Cahayabiru.com