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

189 lines
5.8 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_rwlockattr_destroy()--Destroy Read/Write Lock Attribute</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_rwlockattr_destroy()--Destroy Read/Write Lock Attribute</h2>
<div class="box" style="width: 70%;">
<br>
&nbsp;&nbsp;Syntax:
<pre> #include &lt;pthread.h&gt;
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *attr); </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_rwlockattr_destroy</strong>() function destroys a read/write lock
attributes object and allows the systems to reclaim any resources associated with that read/write
lock attributes object. This does not have an effect on any read/write lock already created using
this read/write lock attributes object.</p>
<br>
<h3>Authorities and Locks</h3>
<p>None.</p>
<br>
<h3>Parameters</h3>
<dl>
<dt><strong>attr</strong></dt>
<dd>(Input) Address of the read/write lock attributes object to be destroyed</dd>
</dl>
<br>
<h3>Return Value</h3>
<dl>
<dt><strong>0</strong></dt>
<dd><strong>pthread_rwlockattr_destroy</strong>() was successful.</dd>
<dt><strong>value</strong></dt>
<dd><strong>pthread_rwlockattr_destroy</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_rwlockattr_destroy</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>> header file. See <a href="rzah4hed.htm">Header files for Pthread functions</a>.<br><br></li>
<li><a href="users_83.htm">pthread_rwlockattr_init()</a>--Initialize Read/Write Lock Attribute<br><br></li>
<li><a href="users_86.htm">pthread_rwlock_init()</a>--Initialize Read/Write Lock</li>
</ul>
<br>
<h3><a name="371610">Example</a></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 &quot;check.h&quot;
pthread_rwlock_t rwlock1;
pthread_rwlock_t rwlock2 = PTHREAD_RWLOCK_INITIALIZER;
int main(int argc, char **argv)
{
int rc=0;
pthread_rwlockattr_t attr;
printf(&quot;Enter Testcase - %s\n&quot;, argv[0]);
printf(&quot;Create a default rwlock attribute\n&quot;);
rc = pthread_rwlockattr_init(&amp;attr);
checkResults(&quot;pthread_rwlockattr_init()\n&quot;, rc);
printf(&quot;Use the rwlock attributes to created rwlocks here\n&quot;);
rc = pthread_rwlock_init(&amp;rwlock1, &amp;attr);
checkResults(&quot;pthread_rwlock_init()\n&quot;, rc);
printf(&quot;The rwlock1 is now ready for use.\n&quot;);
printf(&quot;The rwlock2 that was statically initialized was ready when\n&quot;
&quot;the main routine was entered\n&quot;);
printf(&quot;Destroy rwlock attribute\n&quot;);
rc = pthread_rwlockattr_destroy(&amp;attr);
checkResults(&quot;pthread_rwlockattr_destroy()\n&quot;, rc);
printf(&quot;Use the rwlocks\n&quot;);
rc = pthread_rwlock_rdlock(&amp;rwlock1);
checkResults(&quot;pthread_rwlock_rdlock()\n&quot;, rc);
rc = pthread_rwlock_wrlock(&amp;rwlock2);
checkResults(&quot;pthread_rwlock_wrlock()\n&quot;, rc);
rc = pthread_rwlock_unlock(&amp;rwlock1);
checkResults(&quot;pthread_rwlock_unlock(1)\n&quot;, rc);
rc = pthread_rwlock_unlock(&amp;rwlock2);
checkResults(&quot;pthread_rwlock_unlock(2)\n&quot;, rc);
printf(&quot;Destroy the rwlocks\n&quot;);
rc = pthread_rwlock_destroy(&amp;rwlock1);
checkResults(&quot;pthread_rwlock_destroy(1)\n&quot;, rc);
rc = pthread_rwlock_destroy(&amp;rwlock2);
esults(&quot;pthread_rwlock_destroy(2)\n&quot;, rc);
printf(&quot;Main completed\n&quot;);
return 0;
}</pre>
<p><strong>Output:</strong></p>
<pre>Enter Testcase - QP0WTEST/TPRWLAI0
Create a default rwlock attribute
Use the rwlock attributes to created rwlocks here
The rwlock is now ready for use.
The rwlock that was statically initialized was ready when
the main routine was entered
Destroy rwlock attribute
Use the rwlocks
Destroy the rwlocks
Main completed</pre>
<br>
<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>