linux 에서 병렬 논리 실현

4248 단어
\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\# 셸 시 뮬 레이 션 병발 주 수 를 실현 합 니 다\#\#\#\#\#\#\#\#\#\#\#\#\#\# #\#\# 때때로 우 리 는 일부 프로그램 이 동시에 달 릴 수 있다 는 것 을 알 고 서로 영향 을 주지 않 습 니 다. 효율 을 높이 기 위해 병발 주 스 크 립 트 를 사용 해 야 합 니 다.
\# 1 、 사고방식 은 우리 모두 linux 에서 프로그램 을 백 엔 드 스 크 립 트 에 버 리 고 여러 개 를 동시에 뛸 수 있다 는 것 을 알 고 있다. 이것 이 바로 병발 을 실현 하 는 사고방식 이다. 그러나?만약 우리 가 한꺼번에 많은 백 스테이지 프로그램 을 뛴다 면 서버 가 견 디 지 못 한다 면...손 으로 컨트롤 하면 어색 하 다.이 건 좀 낮 아 요.
\# 2 、 사고방식 2 위 에서 우 리 는 개선 판 을 만 들 었 습 니 다. 우 리 는 순환 을 쓰 고 나 누 어 달 립 니 다. 매번 에 10 개 만 달 릴 수 있 습 니 다. 그러면 위의 문 제 를 해결 할 수 있 습 니 다. 그러나 나 누 어 달 립 니 다. 모든 것 이 다 달 려 야 다음 에 계속 할 수 있 습 니 다. 만약 에 매번 에 한 번 씩 늦게 달 리 는 것 이 있 으 면 효율 이 낮 습 니 다.
\# 3 、 사고방식 3 은 지금의 서비스 와 같다. 예 를 들 어 은행 에 가면 우 리 는 모두 은행 에 가서 수속 을 밟 는 것 이 그 번호 라 는 것 을 알 고 있다. 만약 에 은행 에 10 개의 창구 가 있다 고 가정 하면 우 리 는 어떤 사람들 이 하 는 업무 가 매우 간단 하고 분 안에 끝 난 다 는 것 을 알 고 있다. 그러나 어떤 사람들 은 매우 느 려 서 모든 사람 에 게 번호 가 있어 야 한다. 번호 에 따라 처리 해 야 한다.이렇게 하면 모든 창구 가 고객 에 게 업 무 를 처리 하도록 보장 할 수 있다.이것 이 바로 Liux 병발 을 처리 하 는 논리 이다.
실현: 유명한 파이프 mkfifo 명령 과 exec 명령 으로 이 루어 집 니 다. 파 이 프 는 차단 되 는 특징 이 있 습 니 다. 전송 값 을 기 다 려 야 계속 실 행 됩 니 다. 모 르 는 파트너 가 있 으 면 어머니 를 찾 아 갈 수 있 습 니 다.
#!/bin/bash
############################################
## Author:lugh1
## Blog:
## Time:2019-06-04 16:46:07
## Version:V 1.0
## Description:     gp   exp 
############################################

#    。。。。

PWD=`cd $(dirname "$0");pwd` #       

#         
mkfifo $PWD/fifo_file

#       fifo_file    ,      4(         ),    3-9      
exec 3<>$PWD/fifo_file

#        ,     
rm -f $PWD/fifo_file

#     ,            
for ((i=0;i<10;i++)) 
do
  echo "" > &3
done

#         ,               
while true
do
  read -u3 #       ,    ,            ,         ,
        #                 ,            

   {
    sh shell.sh #           
    echo "" >&3 
   }& #      ,                  ,       ,               
     #      ,    {}&,          ,    ,          ,          
        #            
done
wait #            
exec 3>&- #       
exec 3 
 

좋은 웹페이지 즐겨찾기