The UNIX and Linux Forums  


Go Back   Die UNIX-und Linux-Foren > Betriebssysteme > HP-UX
.
Google unix.com



HP-UX HP-UX (Hewlett Packard UniX) ist Hewlett-Packard-eigene Implementierung des Unix-Betriebssystem, basierend auf System V

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Vermeiden Sie Duplikate in einer Datei pssandeep UNIX for Dummies Questions & Answers 7 03-26-2008 06:36 AM
AWK: Wie zu vermeiden System sandeep_hi Shell Programmierung und Scripting 0 06-23-2006 07:01 AM
Wie vermeide ich historying mein Kommando ting123 UNIX for Dummies Questions & Answers 2 05-06-2006 05:58 AM
Vermeiden Sie Spam in pine? a25khan UNIX for Dummies Questions & Answers 1 12-13-2003 10:50 AM
So sperren Tastatur sperren ohne Befehl dianayun UNIX for Dummies Questions & Answers 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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 02-03-2008
Frank2004 Frank2004 is offline
Registrierte Nutzer
  
 

Join Date: Jun 2004
Ort: Beijing, China
Beiträge: 54
vermeiden semphore Sperre

entwickelten wir eine Reihe von System-V-Schnittstelle semphore für unsere Anwendung, in allen von ihnen arbeiten normal, nur selten dazu führen, dass der Stillstand. Hier sind einige wichtige sem_wait und sem_post Schnittstelle, pls Punkt einige Vorschläge an den festen die festgefahrene 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;

}


Zuletzt bearbeitet von Frank2004; am 02-03-2008 11:06 PM..
 

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Aus
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 11:50 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0