分享

线程的简单定义与使用实例

 海漩涡 2014-08-12
#include <stdio.h>
#include <pthread.h>

/** @typedef funcThreadRoute
 @breif 线程函数
 */
typedef void *(*funcThreadRoute)(void*);

/*
bool CreateDetachedThread(funcThreadRoute route, void *param,bool scope)
{
    int ret;
pthread_t thread;
pthread_attr_t attr;
pthread_attr_init(&attr);

if(scope)
{
       pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
}
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
ret = (pthread_create(&thread, &attr, route,param) == 0);
pthread_attr_destroy(&attr);
printf("TTT----ret[%d]\n",ret);
return ret;
}*/
pthread_t th;

int CreateThread(pthread_t thread, funcThreadRoute func, void *param )
{
    
bool ret;
pthread_attr_t thread_attr;

ret = pthread_attr_init(&thread_attr);
if(ret != 0)
{
return -1;
}
ret = pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);
if(ret != 0)
{
(void)pthread_attr_destroy(&thread_attr);
return -1;
}
ret = pthread_create(&thread, &thread_attr, func, param);
if(ret != 0)
{
(void)pthread_attr_destroy(&thread_attr);

return -1;
}
(void)pthread_attr_destroy(&thread_attr);
    pthread_exit(NULL);
return 0;
}

void *printff(void *p)
{
    printf("TTTTTTTT--------hello--num[%d]\n",*(int *)p);
}
int main(int argc,char *argv[])
{
    int ret;
int n=1000;
    ret = CreateThread(th,printff, (void*)&n);
    if(ret < 0)
    {
        printf("create thread error\n");
}
return 0;
}

编译:g++ phtread.cpp -o pthread -lpthread
注:编译时记得加链接库 -lpthread

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多