操做系統實驗一:併發程序設計

1、實驗目的

1)加深對進程併發執行的理解,認識多進程併發執行的實質。算法

2)觀察進程共享資源的現象,學習解決進程互斥和同步的方法。併發

 

2、實驗要求:

本實驗要求用高級語言,啓動多進程併發運行,設計相應代碼,顯示進程無關併發、進程共享變量併發的運行結果。並完成實驗報告。app

  

3、實驗內容:學習

分別實現如下四種狀況的併發:ui

1.併發的進程之間無關,顯示進程名稱,開始與結束時間。spa

模擬多終端售票狀況,併發的多個終端進程之間共享剩餘票數這個共享變量。設計

2.用全局變量實現。code

3.用進程間共享數據機制實現。blog

4.用進程間共享數據機制和加鎖機制實現。進程

 

4、實驗過程與結果

  1. 算法思想與設計
  2. 算法實現代碼
    1. #mpml.py
      #使用Manager
      from multiprocessing import Manager, Process
      
      
      def main(dic, name):
      dic['count'] -= 1
      print(name, dic)
      
      
      if __name__ == '__main__':
      mgr = Manager()
      dic=mgr.dict({'count':100})
      p_lst=[]
      for i in range(50):
      p =Process(target=main,args=(dic,'進程%s'%i,))
      p.start()
      p_lst.append(p)
      for i in p_lst:
      i.join()
      print('主進程',dic)
      #mpml.py
      #使用Manager,lock
      from multiprocessing import Manager, Process,Lock
      
      
      def main(dic, lock,name):
      lock.acquire()
      dic['count'] -= 1
      print(name, dic)
      lock.release()
      
      
      if __name__ == '__main__':
      mgr = Manager()
      lck=Lock()
      dic=mgr.dict({'count':100})
      p_lst=[]
      for i in range(50):
      p =Process(target=main,args=(dic,lck,'進程%s'%i,))
      p.start()
      p_lst.append(p)
      for i in p_lst:
      i.join()
      print('主進程',dic)
  3. 運行結果
相關文章
相關標籤/搜索