博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统实验一:并发程序设计
阅读量:4921 次
发布时间:2019-06-11

本文共 1621 字,大约阅读时间需要 5 分钟。

---恢复内容开始---

一、实验目的

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

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

 

二、实验要求:

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

  

三、实验内容:

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

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

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

2.用全局变量实现。

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

4.用进程间共享数据机制和加锁机制实现。

 

四、实验过程与结果

  1. 算法思想与设计
  2. 算法实现代码
  3. 运行结果
public class ThreadTest3 {	public static void main(String[] args) {		Shop shop = new Shop();		for (int i = 1; i <= 5; i++) {			new Thread(shop,"").start();		}	}}class Shop implements Runnable{	String name;	ticket t;		public Shop() {		t.total = 100;		t.count = 0;		}	public void run() {		while (t.total>0) {			synchronized (this) {				try {					Thread.sleep(new Random().nextInt(1000));				} catch (InterruptedException e) {					e.printStackTrace();				}				System.out.println(Thread.currentThread().getName()+"_____"+t.count);				t.total--;				t.count++;			}			}	}}class ticket {	int total;	int count;}

  

通过共享变量实现

import osimport threadingtickis=1000  lock=threading.Lock() def sale_tickis(thread_name):    global tickis     global lock       while 1:        lock.acquire()        if tickis!=0:            tickis-=1            print(thread_name,"余票为:",tickis)        else:            print(thread_name,"票卖完了")            os._exit(0)          lock.release()class my_thread(threading.Thread):    def __init__(self,name=""):               threading.Thread.__init__(self)        self.name=name        def run(self):        sale_tickis(self.name)if __name__=="__main__":    for i in range(1,21):        thread = my_thread("线程" + str(i))        thread.start()

 

转载于:https://www.cnblogs.com/songwanli/p/10891196.html

你可能感兴趣的文章
正则表达式——替换
查看>>
用ASP.NET Web API技术开发HTTP接口(二)
查看>>
MATLAB GUI不同控件函数间变量传递方法
查看>>
前端开发构建工具gulp的安装使用
查看>>
LOFTERD18B542F16FF685FD684F427B405BA35
查看>>
Word直接发布新浪博客(以Wo…
查看>>
《C++编程规范:101条规则、准则与最佳实践》学习笔记
查看>>
Day 5 dict + set(初识)
查看>>
点击button触发onclick事件判空后依旧自动跳转
查看>>
(十六)异常
查看>>
分布式计算领域的哥德尔Eric Brewer
查看>>
作业3
查看>>
BZOJ 1230 Usaco2008 Nov 开关灯
查看>>
【bzoj 2916】[Poi1997]Monochromatic Triangles
查看>>
C# IO 随笔
查看>>
Console-算法[for,if]-不用第三个变量,交换两字符串的值
查看>>
举例说明$POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别
查看>>
前端接受文件调用后台上传文件的方法
查看>>
ESRI ArcGIS Desktop v10.2-ISO 1DVD
查看>>
win10查看激活到期时间
查看>>