The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Operativsystemer > HP-UX
.
google unix.com



HP-UX HP-UX (Hewlett Packard Unix) er Hewlett-Packard's ejendomsretligt gennemførelsen af Unix-operativsystemet, der er baseret på System V.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Undgå dubletter i en fil pssandeep UNIX for dummyer Spørgsmål & svar 7 03-26-2008 06:36 AM
AWK: Hvordan man undgår System sandeep_hi Shell Programmering og Scripting 0 06-23-2006 07:01 AM
Hvordan man undgår historying min kommando ting123 UNIX for dummyer Spørgsmål & svar 2 05-06-2006 05:58 AM
Undgå spam i fyr? a25khan UNIX for dummyer Spørgsmål & svar 1 12-13-2003 10:50 AM
hvordan man kan låse tastaturet uden brug låse kommando dianayun UNIX for dummyer Spørgsmål & svar 7 06-21-2002 07:05 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 02-03-2008
Frank2004 Frank2004 is offline
Registreret Bruger
  
 

Join Date: Jun 2004
Location: Beijing, Kina
Stillinger: 54
undgå semphore lås

vi udviklet en række system V semphore interface til vores ansøgning, generelt, alle af dem arbejde normalt, sjældent forårsage dødvandet. Her er nogle vigtige sem_wait og sem_post interface, pls punkt nogle forslag til faste dødvandet problem:

Code:
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;

}


Sidst redigeret af Frank2004; 02-03-2008 på 11:06 PM..
 

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er Slukket
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 05:40 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0