创建线程工具函数

编程入门 行业动态 更新时间:2024-10-27 21:10:11

创建<a href=https://www.elefans.com/category/jswz/34/1771240.html style=线程工具函数"/>

创建线程工具函数

这段代码是一个用于创建线程的工具函数。下面是代码的详细解释:int tool_CreateThread(void *(*ThreadBody)(void *), void *pPara, pthread_t *pPid, size_t iSize)
{pthread_t ThreadId;// 创建并初始化线程属性对象pthread_attr_t attr;pthread_attr_init(&attr);// 设置线程作用域为系统范围(PTHREAD_SCOPE_SYSTEM),即可以在不同的CPU核上运行pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);// 设置线程为分离状态,即线程结束后会自动释放资源pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);// 获取当前线程栈大小size_t stack_size;int status = pthread_attr_getstacksize(&attr, &stack_size);if (status != 0){LogError("pthread_attr_getstacksize, errno-%d err-%s!", errno, strerror(errno));return -1;}// 设置线程栈大小status = pthread_attr_setstacksize(&attr, iSize);if (status != 0) {LogError("pthread_attr_setstacksize, errno-%d err-%s!", errno, strerror(errno));return -1;}// 创建线程,并指定线程入口函数和参数if(pthread_create(&ThreadId, &attr, ThreadBody, pPara) == 0)//创建线程{pthread_attr_destroy(&attr); // 创建成功后销毁线程属性对象if(pPid != NULL){*pPid = ThreadId; // 将创建成功的线程ID返回给调用者}LogNotice("tool_CreateThread:create pthread success. stack size:[%dKB].\n", iSize/1024);return 0;}pthread_attr_destroy(&attr); // 创建失败后销毁线程属性对象return -1;
}

这个函数的作用是创建一个新的线程,主要包含以下步骤:

  1. 初始化线程属性对象,并设置线程作用域为系统范围(PTHREAD_SCOPE_SYSTEM)。
  2. 设置线程为分离状态,即线程结束后会自动释放资源。
  3. 获取当前线程栈大小,并设置新线程的栈大小。
  4. 调用pthread_create函数创建新线程,指定线程入口函数和参数。
  5. 如果线程创建成功,将线程ID返回给调用者,并打印成功信息。
  6. 如果线程创建失败,则返回-1。

需要注意的是,该函数在创建线程后会销毁线程属性对象,而不会等待线程结束。所以创建的线程是分离状态的,线程结束后会自动释放资源。

更多推荐

创建线程工具函数

本文发布于:2023-12-05 23:53:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1665797.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:线程   函数   工具

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!