File: sem.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (275 lines) | stat: -rwxr-xr-x 11,124 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
<?xml version="1.0" encoding="iso-8859-1"?>
 <reference id="ref.sem">
  <title>Funciones Sem&aacute;foro y de memoria compartida</title>
  <titleabbrev>Semaphore</titleabbrev>
  <partintro>
  <para>
   Este m&oacute;dulo provee funciones sem&aacute;foro utilizando los semaforos de System V.
   Los sem&aacute;foros pueden usarse para obtener acceso exclusivo a algun recurso del
   ordenador en cuesti&oacute;n, o para limitar el n&uacute;mero de procesos que pueden usar
   un recurso simultaneamente.</para>
  <para>
   Este m&oacute;dulo provee tambien funciones de memoria compartida, usando el
   compartimiento de memoria de System V. La memoria compartida puede usarse para proveer
   acceso a variables globales. Los diferentes demonios http e incluso otros programas,
   (como Perl, C, ...) son capaces de utilizar estos datos, para intercambiarlos de
   modo global. Recuerde que, la memoria compartida NO es segura para los
   accesos simult&aacute;neos. Use los sem&aacute;foros para obtener sincronismo.

    <table>
     <title>Limites de la memoria compartida del SO Unix</title>
     <tgroup cols="2">
      <tbody>
       <row>
	<entry>SHMMAX</entry> 
	<entry>m&aacute;ximo tama&ntilde;o de memoria compartida, normalmente 131072
	bytes</entry>
       </row>
       <row>
	<entry>SHMMIN</entry>
	<entry>minimo tama&ntilde;o de memoria compartida, por lo general 1 byte</entry>
       </row>
       <row>
	<entry>SHMMNI</entry> 
	<entry>m&aacute;xima cantidad de segmentos de memoria compartida, normalmente
	100</entry>
       </row>
       <row>
	<entry>SHMSEG</entry>
	<entry>m&aacute;ximo de memoria compartida por proceso, normalmente
	6</entry>
       </row>
      </tbody>
     </tgroup>
    </table></para>

  </partintro>

  <refentry id="function.sem-get">
   <refnamediv>
    <refname>sem_get</refname>
    <refpurpose>obtiene la identificacion de un sem&aacute;foro (semaphore id)</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>sem_get</methodname>
     <methodparam><type>int</type><parameter>key</parameter></methodparam>
     <methodparam choice="opt"><type>int</type><parameter>max_acquire
      </parameter></methodparam>
     <methodparam choice="opt"><type>int</type><parameter>perm
      </parameter></methodparam>
     </methodsynopsis>
    <para>
     Devuelve: Un identificador positivo de sem&aacute;foro en caso de &eacute;xito, o falso en caso de
     error.</para>
    <para>
     <function>sem_get</function> Devuelve un id que puede usarse para acceder
     al sem&aacute;foro de System V con la llave dada.  El sem&aacute;foro se usa si es necesario
     usando los bits de permisos especificados en perm (por defecto 0666). El n&uacute;mero
     de procesos que pueden adquirir el sem&aacute;foro simult&aacute;neamente, se define en max_acquire
     (por defecto es 1).  Actualmente este valor se fija s&oacute;lo si el proceso determina que
     es el &uacute;nico relacionado actualmente al sem&aacute;foro.</para>
    <para>
     Una segunda llamada a <function>sem_get</function> para la misma llave, devolver&aacute;
     un id de sem&aacute;foro diferente, pero con ambos identificadoes, se acceder&aacute; al mismo
     sem&aacute;foro.</para>
    <para> 
     V&eacute;ase tambi&eacute;n: <function>sem_acquire</function> y
     <function>sem_release</function>.</para>
   </refsect1>
  </refentry>

  <refentry id="function.sem-acquire">
   <refnamediv>
    <refname>sem_acquire</refname>
    <refpurpose>adquiere un sem&aacute;foro, lo toma para s&iacute;</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>sem_acquire</methodname>
     <methodparam><type>int</type><parameter>sem_identifier</parameter></methodparam>
     </methodsynopsis>
    <para>
     Devuelve: Verdadero si hay &eacute;xito, falso si hay errores</para>
    <para>
     <function>sem_acquire</function> Produce un bloqueo (de ser necesario) hasta que el sem&aacute;foro puede
     adquirirse.  Un proceso intentando adquirir un sem&aacute;foro ya adquirido, se bloquear&aacute; permanentemente si
     adquiriendo el sem&aacute;foro, excede su valor de max_acquire.</para>
    <para>
     Despues de procesar una petici&oacute;n, cualquier sem&aacute;foro adquirido por un proceso, que no sea expl&iacute;citamente
     liberado, ser&aacute; liberado autom&ntilde;aticamente, generando un mensaje de alerta.</para>
    <para> 
     V&eacute;ase tambien: <function>sem_get</function> and
               <function>sem_release</function>.</para>
   </refsect1>
  </refentry>

  <refentry id="function.sem-release">
   <refnamediv>
    <refname>sem_release</refname>
    <refpurpose>release a semaphore</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>sem_release</methodname>
     <methodparam><type>int</type><parameter>sem_identifier</parameter></methodparam>
     </methodsynopsis>
    <para>
     Returns: &true; on success, &false; on error</para>
    <para>
     <function>sem_release</function> releases the semaphore if it
     is currently acquired by the calling process, otherwise
     a warning is generated.</para>
    <para>
      After releasing the semaphore, <function>sem_acquire</function>
      may be called to re-acquire it.</para>
    <para>
     V&eacute;ase tambien: <function>sem_get</function> y
               <function>sem_acquire</function>.</para>
   </refsect1>
  </refentry>

  <refentry id="function.shm-attach">
   <refnamediv>
    <refname>shm_attach</refname>
    <refpurpose>Crea o abre un segmento de memoria compartida</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>shm_attach</methodname>
     <methodparam><type>int</type><parameter>key</parameter></methodparam> 
     <methodparam choice="opt"><type>int</type><parameter>memsize</parameter></methodparam>
     <methodparam choice="opt"><type>int</type><parameter>perm</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>shm_attach</function> devuelve un identificador que
     puede usarse para acceder a la memoria compartida de SystemV, con
     la llave dada, la primera llamada crear&aacute; el segmento de memoria compartida
     con mem_size de tama&ntilde;o (por defecto: sysvshm.init_mem en el <link linkend="configuration.file">archivo de configuraci&oacute;n</link>, o bien de
     10000 bytes) y los bits de permiso mas apropiados (por defecto: 0666).</para>
    <para>
     Una segunda llamada a <function>shm_attach</function> con la misma
     <parameter>llave</parameter> devolvera un id diferente de memoria compartida,
     pero ambos identificadores acceden a la misma porci&oacute;n de memoria compartida.
     <parameter>memsize</parameter> y
     <parameter>perm</parameter> ser&aacute;n ignorados.</para>
   </refsect1>
  </refentry>

  <refentry id="function.shm-detach">
   <refnamediv>
    <refname>shm_detach</refname>
    <refpurpose>Finaliza conexi&oacute;n con un segmento de memoria compartida</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>shm_detach</methodname>
     <methodparam><type>int</type><parameter>shm_identifier</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>shm_detach</function> finaliza la conexi&oacute;n con la memoria compartida,
     especificada por el identificador <parameter>shm_identifier</parameter> creado con
     <function>shm_attach</function>. Hay que recordar que la memoria compartida a&uacute;n existe en el sistema Unix, y
     los datos a&uacute;n est&aacute;n presentes.</para>
   </refsect1>
  </refentry>

  <refentry id="function.shm-remove">
   <refnamediv>
    <refname>shm_remove</refname> 
    <refpurpose>Elimina memoria compartida del sistma Unix</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>shm_remove</methodname>
     <methodparam><type>int</type><parameter>shm_identifier</parameter></methodparam>
     </methodsynopsis>
    <para>
     Elimina la memoria compartida de un sistema Unix, Todos los datos ser&aacute;n destru&iacute;dos.</para>
   </refsect1>
  </refentry>

  <refentry id="function.shm-put-var">
   <refnamediv>
    <refname>shm_put_var</refname> 
    <refpurpose>Inserta o actualiza una variable en la memoria compartida</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>shm_put_var</methodname>
     <methodparam><type>int</type><parameter>shm_identifier</parameter></methodparam>
     <methodparam><type>int</type><parameter>variable_key</parameter></methodparam>
     <methodparam><type>mixed</type><parameter>variable</parameter></methodparam>
     </methodsynopsis>
    <para>
     Inserta o actualiza una <parameter>variable</parameter> con una llave
     <parameter>variable_key</parameter>. Son v&aacute;lidos todos los tipos de variable (doble,
     entera, cadena, arreglo).</para>
   </refsect1>
  </refentry>

  <refentry id="function.shm-get-var">
   <refnamediv>
    <refname>shm_get_var</refname> 
    <refpurpose>Devuelve una variable de la memoria compartida
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>mixed</type><methodname>shm_get_var</methodname>
     <methodparam><type>int</type><parameter>id</parameter></methodparam>
     <methodparam><type>int</type><parameter>variable_key</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>shm_get_var</function> devuelve la variable con la llave
     <parameter>variable_key</parameter> dada. La variable, queda presente en la memoria compartida.</para>
   </refsect1>
  </refentry>

  <refentry id="function.shm-remove-var">
   <refnamediv>
    <refname>shm_remove_var</refname> 
    <refpurpose>Elimina una variable de la memoria compartida
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Descripci&oacute;n</title>
     <methodsynopsis>
     <type>int</type><methodname>shm_remove_var</methodname>
     <methodparam><type>int</type><parameter>id</parameter></methodparam>
     <methodparam><type>int</type><parameter>variable_key</parameter></methodparam>
     </methodsynopsis>
    <para>
     Elimina la varible que se corresponde con la llave <parameter>variable_key</parameter> dada,
     liberando la memoria que ocupaba aquella.</para>
   </refsect1>
  </refentry>

</reference>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->