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

190 lines
6.0 KiB
HTML

<!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_mutexattr_setpshared()--Set Process Shared Attribute in Mutex Attributes Object</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_mutexattr_setpshared()--Set Process Shared Attribute in Mutex Attributes Object</h2>
<div class="box" style="width: 70%;">
<br>
&nbsp;&nbsp;Syntax:
<pre> #include &lt;pthread.h&gt;
int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr,
int pshared);</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_mutexattr_setpshared</strong>() function sets the current pshared attribute for the mutex attributes object. The process shared attribute indicates whether the mutex that is created using the mutex attributes object can be shared between threads in separate processes (<strong>PTHREAD_PROCESS_SHARED</strong>) or shared between threads within the same process (<strong>PTHREAD_PROCESS_PRIVATE</strong>).</p>
<p>Even if the mutex in storage is accessible from two separate processes, it cannot be used from both processes unless the process shared attribute is <strong>PTHREAD_PROCESS_SHARED</strong>.</p>
<p>The default pshared attribute for mutex attributes objects is <strong>PTHREAD_PROCESS_PRIVATE</strong>.</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 variable containing the mutex attributes object&nbsp;<a name="297035"></a></dd>
<dt><strong>pshared</strong></dt>
<dd>(Input) One of <strong>PTHREAD_PROCESS_SHARED</strong> or <strong>PTHREAD_PROCESS_PRIVATE</strong></dd>
</dl>
<br>
<h3>Return Value</h3>
<dl>
<dt><strong>0</strong></dt>
<dd><strong>pthread_mutexattr_setpshared</strong>() was successful.</dd>
<dt><strong>value</strong></dt>
<dd><strong>pthread_mutexattr_setpshared</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_mutexattr_setpshared</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_52.htm">pthread_mutexattr_getpshared()</a>--Get Process Shared Attribute from Mutex Attributes Object<br><br></li>
<li><a href="users_61.htm">pthread_mutex_init()</a>--Initialize Mutex</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>#include &lt;pthread.h&gt;
#include &lt;stdio.h&gt;
#include &quot;check.h&quot;
void showPshared(pthread_mutexattr_t *mta) {
int rc;
int pshared;
printf(&quot;Check pshared attribute\n&quot;);
rc = pthread_mutexattr_getpshared(mta, &amp;pshared);
checkResults(&quot;pthread_mutexattr_getpshared()\n&quot;, rc);
printf(&quot;The pshared attributed is: &quot;);
switch (pshared) {
case PTHREAD_PROCESS_PRIVATE:
printf(&quot;PTHREAD_PROCESS_PRIVATE\n&quot;);
break;
case PTHREAD_PROCESS_SHARED:
printf(&quot;PTHREAD_PROCESS_SHARED\n&quot;);
break;
default :
printf(&quot;! pshared Error !\n&quot;);
exit(1);
}
return;
}
int main(int argc, char **argv)
{
int rc=0;
pthread_mutexattr_t mta;
int pshared=0;
printf(&quot;Entering testcase\n&quot;);
printf(&quot;Create a default mutex attribute\n&quot;);
rc = pthread_mutexattr_init(&amp;mta);
checkResults(&quot;pthread_mutexattr_init()\n&quot;, rc);
showPshared(&amp;mta);
printf(&quot;Change pshared attribute\n&quot;);
rc = pthread_mutexattr_setpshared(&amp;mta, PTHREAD_PROCESS_SHARED);
checkResults(&quot;pthread_mutexattr_setpshared()\n&quot;, rc);&nbsp;&nbsp;
showPshared(&amp;mta);
printf(&quot;Destroy mutex attribute\n&quot;);
rc = pthread_mutexattr_destroy(&amp;mta);
checkResults(&quot;pthread_mutexattr_destroy()\n&quot;, rc);
printf(&quot;Main completed\n&quot;);
return 0;
}</pre>
<p><strong>Output:</strong></p>
<pre>Entering testcase
Create a default mutex attribute
Check pshared attribute
The pshared attribute is: PTHREAD_PROCESS_PRIVATE
Change pshared attribute
The pshared attribute is: PTHREAD_PROCESS_SHARED
Destroy mutex attribute
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>