The UNIX and Linux Forums  


Go Back   В UNIX и Linux Форумы > Операционные системы > HP-UX
.
Google unix.com



HP-UX HP-UX (Hewlett Packard UNIX) является Hewlett-Packard Собственная реализации на Unix операционной системы, основанной на System V.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Избегайте дубликатов в один файл pssandeep UNIX для чайников Вопросы И Ответы 7 03-26-2008 06:36 AM
AWK: Как избежать системы sandeep_hi Shell программирование и сценарии 0 06-23-2006 07:01 AM
Как избежать historying моя команда ting123 UNIX для чайников Вопросы И Ответы 2 05-06-2006 05:58 AM
Избегайте спама в сосновых? a25khan UNIX для чайников Вопросы И Ответы 1 12-13-2003 10:50 AM
Как заблокировать клавиатуру без блокировки с помощью команды dianayun UNIX для чайников Вопросы И Ответы 7 06-21-2002 07:05 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 02-03-2008
Frank2004 Frank2004 is offline
Зарегистрированный пользователь
  
 

Регистрация: Июнь 2004
Место проведения: Пекин, Китай
Сообщений: 54
semphore избежать блокировки

Мы разработали набор системной semphore V интерфейс для нашего приложения, в общем, и все они работают нормально, редко приводят к тупиковой ситуации. Вот некоторые важные sem_wait и sem_post интерфейс, PLS момент некоторые предложения по фиксированной тупиковой проблемы:

Код:
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;

}


Последний раз редактировалось Frank2004; на 02-03-2008 11:06 PM..
Old 03-10-2009
Frank2004 Frank2004 is offline
Зарегистрированный пользователь
  
 

Регистрация: Июнь 2004
Место проведения: Пекин, Китай
Сообщений: 54
надеюсь ответ, спасибо.
Closed Thread

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код Вне
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 12:25 PM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0