分享

LIINUX创建线程的简单实例代码

 海漩涡 2015-03-16

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

typedef void *(*funcThread)(void*);
//typedef void *(*funcThreadRoute)(void*);
int Pthread_Create(funcThread func, void *param)
{
    bool ret;
    pthread_t pth;
    pthread_attr_t attr;

    ret = pthread_attr_init(&attr);
    if(0 != ret)
    {
        pthread_attr_destroy(&attr);
        return -1;
    }

    ret = pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
    if(0 != ret)
    {
        pthread_attr_destroy(&attr);
        return -1;
    }

    ret = pthread_create(&pth,&attr,func,param);
    if(0 != ret)
    {
        pthread_attr_destroy(&attr);
        return -1;
    }
    pthread_attr_destroy(&attr);
    return 0;
}

void *printff(void* n)
{
    int *p = (int *)n;
    while(1)
    {
        //自身的ID。pthread_t的类型为unsigned long int
        printf("n:%d pid:%lu\n",*((int *)n),pthread_self());  
        //printf("pid:%d\n",pthread_self());
        sleep(1);
        (*p)++;
    }
    pthread_exit(NULL);
}

int main(int argc, char * argv [ ])
{
    int ret;
    int n = 100;
    ret = Pthread_Create(printff, (void *)(&n));
    if(0 == ret)
    {
        printf("Pthread_Create success\n");
        while(1);
    }
    return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约