The UNIX and Linux Forums  
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。

Go Back   UNIXおよびLinuxフォーラム > オペレーティングシステム > HP - UX
Googleのunix.com



HP - UX HP - UXの(ヒューレットパッカードのUNIX )のHewlett - PackardのUNIXオペレーティングシステムの独自の実装、システムの五に基づい

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
ファイル内の重複を避ける pssandeep UNIXのダミー質問と回答のため 7 2008年3月26日 06:36午前
Awkの:どのようにシステムを避けるために sandeep_hi シェルプログラミングとスクリプティング 0 2006年6月23日 06:01午前
どのようにコマンドをhistoryingを避けるために ting123 UNIXのダミー質問と回答のため 2 2006年5月6日 04:58午前
松のスパムを避けるか? a25khan UNIXのダミー質問と回答のため 1 2003年12月13日 10:50午前
どのようロックコマンドを使用せずに、キーボードをロックする dianayun UNIXのダミー質問と回答のため 7 2002年6月21日 06:05午後

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2008年2月3日
Frank2004 Frank2004 is offline
登録ユーザー
  
 

参加日: 2004年6月
場所:北京、中国
投稿: 54
semphoreロックを避ける

我々のアプリケーションのため、一般的に、すべてが、通常の仕事は、デッドロックの原因はほとんどのV semphoreインタフェースシステムのセットを開発しました。ここにいくつかの重要な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で最終; 2008年2月3日に 11:06午後..
  #2固定リンク)  
Old 2009年3月10日
Frank2004 Frank2004 is offline
登録ユーザー
  
 

参加日: 2004年6月
場所:北京、中国
投稿: 54
希望応答、感謝します。
Closed Thread

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは オフ
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 06:12午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0