linuxクラシック面接問題:同期の意味(同期と反発における同期&同期通信と非同期通信における同期)&ブロック&非ブロック

2246 ワード

面接では、面接官に「同期の意味を説明してください」と聞かれることが多いので、このときは、穴かもしれないので注意してください.
この質問をされたときは、急いで面接官に答えるのではなく、必ず面接官に確認しておきましょう.1.
この同期は動作の同期です
例えば一群の人はダンスを学んで、前にもう1人の小さいお姉さんはダンスを受け取って、ダンスを学ぶ人の動作とダンサーの動作が同じならば、この時同期の体現です
ps:プロセス/スレッドでの同期もここで示す同期です2.
(1)同期
すなわち、1つの呼び出しが発行されると、結果が得られないまで、その呼び出しは返されず、呼び出し実行が終了するまで待っていたが、このときもその呼び出しの戻り値が得られた.すなわち、同期とは、呼び出し者がこの呼び出しの結果を自発的に待つことを意味する
(2)非同期
非同期は同期とは正反対であり、呼び出しが発行された後、この呼び出しは直接返されるので、すぐに呼び出し結果が得られるのではなく、呼び出しが発行された後、呼び出し結果は呼び出し者によって伝えられる.すなわち、呼び出し結果は呼び出し者がステータス、通知によって呼び出し者に通知されるか、コールバック関数によってこの呼び出しが処理される.
例:
      ,       :
  (1)           ,            ,      ,   
      ,              ,
   (2)           ,        ,           ,
       ,    ,          ,             
 ,        ,         

ブロックと非ブロックは、呼び出し結果(メッセージ、戻り値)を待つプログラムの状態に注目します.3.
ブロック呼び出しとは、呼び出し結果が返されるまで、現在のスレッドは何もしないで、呼び出しスレッドが結果を得るまで待っていたことです.4.
非ブロック呼び出しとは、待機中に他のことをすることができますが、呼び出しスレッドのステータスをポーリングするだけです.5.
同期ブロック=同期+ブロック呼び出し結果は呼び出し者によってアクティブに取得され、ブロック式が待っている.すなわち、呼び出し者は呼び出し結果にアクティブに注目し、ブロック式がそこで見られている.6.
同期非ブロック=同期+非ブロック呼び出し結果は呼び出し者が自発的に取得するが、非ブロック式で待っている.このときの動作は呼び出し結果は呼び出し者が自発的に取得するが、彼はそこで馬鹿に待つのではなく、別のことをする.ただ、時々プログラムの実行状況を見に行くだけだ.7.
非同期ブロック=非同期+ブロック呼び出し結果は、呼び出し元から呼び出し元に通知され、ブロック式でどこで待っているか、つまり呼び出し元はずっとそこで待っているが、プログラムの実行状況を見るのではなく、呼び出し元から通知される8.
非同期ブロック=非同期+ブロック呼び出し結果は呼び出し者から呼び出し者に伝えられるもので、呼び出し者は受動的に結果を知るものであり、呼び出し者は結果を待つ過程で、ずっとそこで馬鹿に待っているのではなく、自分のことをすることができる.
例えば、彼女が食事に行くのを待っています.彼女の今の状態は彼女がまだ片付けていないので、彼女を待つ必要があります(1)同期閉塞
あなたが彼女を待っている間に、ただ単純に彼女を待っているだけで、他のことはしません.そして、自分から彼女が片付けているかどうかを見て、もしよかったら外に出てもいいです.
(2)同期非ブロック
彼女を待つと同時に他のことをすることができます.例えば、彼女を待っていながら問題をすることができますが、彼が片付けたかどうかはあなたが自分から見に行ったのではなく、彼女があなたに知らせたのではありません.
(3)非同期ブロック
あなたが彼女を待っている間に、何もできません.ただ一つのことをするしかありません.それは彼女を待つことです.そして、彼女がいつ片付けるかに注目しません.彼女が片付けるのを待って、あなたに教えてあげると、彼女はもう片付けることができます.外に出ることができます.つまり、あなたは動かされて彼女が片付けることを知っています.
(4)非同期非ブロック
あなたが彼女を待つ时、あなたは别の事をすることができて、彼女を待ちながら自分の事をすることができて、しかしこの时やはり自発的に彼女がいつ良いことに関心を持つことはできなくて、彼女があなたに知らせるまで、彼女はすでに外出することができて、この时あなたはやっとこの结果を知って、あなたは受动的に知っています