首页 > 代码库 > 学习pthreads,使用属性对象创建结合线程和分离线程

学习pthreads,使用属性对象创建结合线程和分离线程

当我们创建了子线程,是让它犹如脱缰之马,信步驰骋,还是如乖巧听话的孩子,时不时教导一下呢?针对这个问题,本文介绍线程的结合和分离,结构分为三个部分,第一部分给出代码示例,第二部分对代码进行讲解,第三部分是运行结果。

一 代码示例

<script src="https://code.csdn.net/snippets/448396.js" type="text/javascript"></script>

二 代码讲解

<script src="https://code.csdn.net/snippets/448400.js" type="text/javascript"></script>

该函数是线程执行的子函数,打印输出线程的ID和一个计算结果,然后终止线程

<script src="https://code.csdn.net/snippets/448405.js" type="text/javascript"></script>

定义线程变量,属性对象变量和一些常见变量。属性对象变量可以根据自己的需求来设置,从而通过属性对象来设置线程的属性,在这里主要是设置线程的结合和分离属性。

<script src="https://code.csdn.net/snippets/448412.js" type="text/javascript"></script>
对属性对象变量进行初始化,并设置属性对象是结合的PTHREAD_CREATE_JOINABLE,第二个参数除了结合,还有分离,即PTHREAD_CREATE_DETACHED。本程序创建的线程都是结合,假如你要创建结合的,只需要改变第二个参数就可以了。另外,创建分离的线程,除了使用属性对象外,还可以直接使用pthread_detach(pthread_t tid)函数。
<script src="https://code.csdn.net/snippets/448423.js" type="text/javascript"></script>
使用属性对象,创建4个线程
<script src="https://code.csdn.net/snippets/448503.js" type="text/javascript"></script>
pthread_attr_destroy()函数用于销毁由attr指定的属性对象,for 循环是用pthread_join结合4个子线程,该函数的作用是直到被调用执行的线程终止,调用线程才执行下一步程序。最后终止线程。
三 运行结果