ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/users_10.htm

213 lines
5.7 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>pthread_attr_setdetachstate()--Set Thread Attributes Object
Detachstate</title>
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Begin Header Records ========================================== -->
<!-- NETMG2 SCRIPT A converted by B2H R4.1 (346) (CMS) by HOLTJM at -->
<!-- RCHVMW2 on 29 Jan 1999 at 10:01:37 -->
<!--File Edited November 2001 -->
<!--End Header Records -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<!-- Java sync-link -->
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript">
</script>
<a name="Top_Of_Page"></a>
<h2>pthread_attr_setdetachstate()--Set Thread Attributes Object
Detachstate</h2>
<div class="box" style="width: 75%;">
<br>
&nbsp;&nbsp;Syntax:
<pre>
#include &lt;pthread.h&gt;
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
</pre>
&nbsp;&nbsp;Service Program Name: QP0WPTHR<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Default Public Authority: *USE <br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Signal Safe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The <strong>pthread_attr_setdetachstate</strong>() function sets the detach
state of the thread attributes object. The detach state of a thread indicates
whether the system is allowed to free thread resources (including but not
limited to thread exit status) when the thread terminates. Some resources (like
automatic storage) are always freed when a thread ends.</p>
<p>The detach state specifies one of <strong>PTHREAD_CREATE_DETACHED</strong>
or <strong>PTHREAD_CREATE_JOINABLE</strong>. The default detach state
(<strong>DEFAULT_DETACHSTATE</strong>) is
<strong>PTHREAD_CREATE_JOINABLE</strong>.</p>
<br>
<h3>Authorities and Locks</h3>
<p>None.</p>
<br>
<h3>Parameters</h3>
<dl>
<dt><strong>attr</strong></dt>
<dd>(Input) The address of the thread attributes object.<br><br></dd>
<dt><strong>detachstate</strong></dt>
<dd>(Output) The detach state, one of <strong>PTHREAD_CREATE_JOINABLE</strong>
or <strong>PTHREAD_CREATE_DETACHED</strong>.</dd>
</dl>
<br>
<h3>Return Value</h3>
<dl>
<dt><strong>0</strong></dt>
<dd><strong>pthread_attr_setdetachstate</strong>() was successful.</dd>
<dt><strong>value</strong></dt>
<dd><strong>pthread_attr_setdetachstate</strong>() was not successful.
<em>value</em> is set to indicate the error condition.</dd>
</dl>
<br>
<h3>Error Conditions</h3>
<p>If <strong>pthread_attr_setdetachstate</strong>() was not successful, the
error condition returned usually indicates one of the following errors. Under
some conditions, the value returned could indicate an error other than those
listed here.</p>
<dl>
<dt><em>[EINVAL]</em></dt>
<dd><p>The value specified for the argument is not correct.</p></dd>
</dl>
<br>
<h3>Related Information</h3>
<ul>
<li>The &lt;<strong>pthread.h</strong>&gt; header file. See <a href=
"rzah4hed.htm">Header files for Pthread functions</a>.<br><br></li>
<li><a href="users_g6.htm">pthread_attr_getdetachstate()</a>--Get Thread Attributes
Object Detachstate<br><br></li>
<li><a href="users_16.htm">pthread_detach()</a>--Detach Thread<br><br></li>
<li><a href="users_25.htm">pthread_join()</a>--Wait for and Detach Thread</li>
</ul>
<br>
<h3>Example</h3>
<p>See <a href="../apiref/aboutapis.htm#codedisclaimer">Code disclaimer information</a>
for information pertaining to code examples.</p>
<pre>
#define _MULTI_THREADED
#include &lt;pthread.h&gt;
#include &lt;stdio.h&gt;
#include "check.h"
void showDetachState(pthread_attr_t *a)
{
int rc=0;
int state=0;
printf("Get detach state\n");
rc = pthread_attr_getdetachstate(a, &amp;state);
checkResults("pthread_attr_getdetachstate()\n", rc);
printf("The thread attributes object indicates: ");
switch (state) {
case PTHREAD_CREATE_DETACHED:
printf("DETACHED\n");
break;
case PTHREAD_CREATE_JOINABLE:
printf("JOINABLE\n");
break;
}
return;
}
int main(int argc, char **argv)
{
pthread_t thread;
int rc=0;
pthread_attr_t pta;
printf("Enter Testcase - %s\n", argv[0]);
printf("Create a default thread attributes object\n");
rc = pthread_attr_init(&amp;pta);
checkResults("pthread_attr_init()\n", rc);
showDetachState(&amp;pta);
printf("Set the detach state\n");
rc = pthread_attr_setdetachstate(&amp;pta, PTHREAD_CREATE_DETACHED);
checkResults("pthread_attr_setdetachstate()\n", rc);
showDetachState(&amp;pta);
printf("Destroy thread attributes object\n");
rc = pthread_attr_destroy(&amp;pta);
checkResults("pthread_attr_destroy()\n", rc);
printf("Main completed\n");
return 0;
}
</pre>
<p><strong>Output:</strong></p>
<pre>
Enter Testcase - QP0WTEST/TASDS0
Create a default thread attributes object
Get detach state
The thread attributes object indicates: JOINABLE
Set the detach state
Get detach state
The thread attributes object indicates: DETACHED
Destroy thread attributes object
Main completed
</pre>
<hr>
API introduced: V4R3
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
"rzah4mst.htm">Pthread APIs</a> | <a href="aplist.htm">APIs by
category</a></td>
</tr>
</table>
</center>
</body>
</html>