C语言 - pthread

发布时间:2017-1-19 6:06:23 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"C语言 - pthread ",主要涉及到C语言 - pthread 方面的内容,对于C语言 - pthread 感兴趣的同学可以参考一下。

C语言 - pthread

pthread_create函数

    原型:int  pthread_create((pthread_t  *thread,  pthread_attr_t  *attr,  void  *(*start_routine)(void  *),  void  *arg)

    用法:#include  <pthread.h>

    功能:创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。

    说明:thread:线程标识符;

              attr:线程属性设置;

              start_routine:线程函数的起始地址;

              arg:传递给start_routine的参数;

              返回值:成功,返回0;出错,返回-1。

    举例:

#include <pthread.h>#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <sys/syscall.h>#define gettid() syscall(SYS_gettid)#define ARRAYSIZE 17#define NUMTHREADS 4struct ThreadData {        int start, stop;        int* array; };void* squarer(void* td) {     struct ThreadData* data=(struct ThreadData*) td;     int start=data->start;     int stop=data->stop;     int* array=data->array;     int i;     pid_t tid1;     tid1 = gettid(); //error at this statement//`     printf("tid : %d\n",tid1);     for (i=start; i<stop; i++) {       //  sleep(1);         array[i]=i*i;         printf("arr[%d] = [%d]\n",i,array[i]);	 printf("%d to %d", start, stop);     }    return NULL;}int main(void) {    int array[ARRAYSIZE];    pthread_t thread[NUMTHREADS];    struct ThreadData data[NUMTHREADS];    int i;    int tasksPerThread=(ARRAYSIZE+NUMTHREADS-1)/NUMTHREADS;    for (i=0; i<NUMTHREADS; i++) {            data[i].start=i*tasksPerThread;            data[i].stop=(i+1)*tasksPerThread;            data[i].array=array;    }    data[NUMTHREADS-1].stop=ARRAYSIZE;    for (i=0; i<NUMTHREADS; i++) {            pthread_create(&thread[i], NULL, squarer, &data[i]);    }    for (i=0; i<NUMTHREADS; i++) {            pthread_join(thread[i], NULL);    }    for (i=0; i<ARRAYSIZE; i++) {            printf("%d ", array[i]);    }    printf("\n");    return 0;}

  编译: gcc -pthread 3.cc

  运行: ./a.out

上一篇:编译时获得系统的日期和时间
下一篇:如何使用CSS绘制一个响应式的矩形

相关文章

关键词: C语言 - pthread

相关评论