# 這是一個簡單的並發程序,有如下要求: # 1.有兩個程序a和b,希望他們能並發執行,以節約時間 # 2.a和b都是按照日期順序執行,但b每日程序的前提條件是當日a的程序已經執行完畢 #解決方案: # 1.創建一個文件描述符作為pipe,a程序每次執行完就把一個日期發送給pipe,然后繼續執行 # 2.b程序每次執行時先從pipe讀取a的日期,如果a的日期>=b的日期,則b繼續執行,否則阻塞。 [ -e /tmp/fd5 ] || mkfifo /tmp/fd5 exec 5<>/tmp/fd5 rm -rf /tmp/fd5 aFun(){ for((i=0;i<10;i++)) do echo 'a'$i sleep 1 echo $i >&5 done } bFun(){ for((i=0;i<10;i++)) do read -u5 j if [ $i -le $j ];then echo 'b'$i fi sleep 1 done } ################################################### aFun & bFun exec 5<&- exec 5>&-