![]() |
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.
|
|
google unix.com
|
|||||||
| Foros | Registro | Reglas de los Foros | Enlaces | Álbumes | Preguntas más frecuentes | Lista de miembros | Calendario | Búsqueda | Puestos de hoy | Marcar Foros Como Leídos |
| HP-UX HP-UX (Hewlett Packard Unix) de Hewlett-Packard es la aplicación de la propiedad del sistema operativo Unix, basado en System V. |
Más UNIX y Linux Foro Temas usted puede encontrar útiles
|
||||
| Hilo | Hilo para principiantes | Foro | Respuestas | Último mensaje |
| Evitar duplicados en un archivo | pssandeep | UNIX for Dummies Preguntas y Respuestas | 7 | 03-26-2008 06:36 AM |
| AWK: ¿Cómo evitar Sistema | sandeep_hi | Programación de scripts de shell y | 0 | 06-23-2006 06:01 AM |
| ¿Cómo evitar historying mi comando | ting123 | UNIX for Dummies Preguntas y Respuestas | 2 | 05-06-2006 04:58 AM |
| Evitar el spam en el pino? | a25khan | UNIX for Dummies Preguntas y Respuestas | 1 | 12-13-2003 10:50 AM |
| la forma de bloquear el teclado sin usar comandos de bloqueo | dianayun | UNIX for Dummies Preguntas y Respuestas | 7 | 06-21-2002 06:05 PM |
![]() |
|
|
Linkback vínculo | Herramientas de hilo | Buscar en este Hilo | Tasa de Hilo | Modos de visualización |
|
|
|
||||
|
semphore evitar el bloqueo
hemos desarrollado un conjunto de sistema de V semphore interfaz de nuestra aplicación, en general, todos ellos de trabajo normal, rara vez causa el estancamiento. Aquí están algunas importantes sem_wait y sem_post interfaz, pls alguna sugerencia a punto fijo el punto muerto problema:
Código:
int sem_wait_V(int id, struct sembuf *sem_pv)
{
sem_pv = new struct sembuf [1] ;
if (sem_op(id,-1, sem_pv)<0)
{
delete sem_pv ;
return -1;
}
delete sem_pv ;
return 0;
}
int sem_post_V(int id, int sem_post_value_V, struct sembuf *sem_pv)
{
if ((sem_post_value_V = semctl(id,0,GETVAL,0)) <0)
{
return -1;
}
if( sem_post_value_V > SEM_POST_LIMIT )
{
if( sem_post_value_V == SEM_POST_LIMIT + 1 ) return -1 ;
return -1 ;
}
sem_pv = new struct sembuf [1] ;
if (sem_op(id,1,sem_pv)<0)
{
delete sem_pv ;
return -1;
}
delete sem_pv ;
return 0;
}
int sem_op(int id,int value, struct sembuf sem_pv[1] )
{
int sem_value ,sem_value1;
sem_pv[0].sem_num = 0 ;
sem_pv[0].sem_flg = 0 ;
if ((sem_pv[0].sem_op =value) == 0)
{
printf("sem_op error: operator is zero !!!!!!!(%d)\n",id) ;
return -1;
}
if ((sem_value = semctl(id,0,GETVAL,0)) <0)
{
perror("semctl create GETVAL");
return -1;
}
again:;
if (semop(id,&sem_pv[0],1)<0)
{
sched_yield() ;
if(errno==EINTR)
{
if ((sem_value1 = semctl(id,0,GETVAL,0)) <0)
{
perror("semctl create GETVAL");
return -1;
}
else
{
if (sem_value != sem_value1 )
return -1;
else
goto again;
}
}
return -1;
}
return 1;
}
Última edición por Frank2004; al 02-03-2008 11:06 PM.. |
|
||||
|
Espero respuesta, gracias.
|
![]() |
| Marcadores |
| Herramientas de hilo | Buscar en este Hilo |
| Modos de visualización | Vota a este hilo |
|
|