操作系统实验一:并发程序设计

一、实验目的

1)加深对进程并发执行的理解,认识多进程并发执行的实质。

2)观察进程共享资源的现象,学习解决进程互斥和同步的方法。

 

二、实验要求:

本实验要求用高级语言,启动多进程并发运行,设计相应代码,显示进程无关并发、进程共享变量并发的运行结果。并完成实验报告。

  

三、实验内容:

分别实现以下四种情况的并发:

1.并发的进程之间无关,显示进程名称,开始与结束时间。

模拟多终端售票情况,并发的多个终端进程之间共享剩余票数这个共享变量。

2.用全局变量实现。

3.用进程间共享数据机制实现。

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. 运行结果

你可能感兴趣的:(操作系统实验一:并发程序设计)