ITPub博客

首页 > 应用开发 > IT综合 > 链动2+1商城系统开发原理(源码搭建)

链动2+1商城系统开发原理(源码搭建)

原创 IT综合 作者:fuxin3 时间:2023-04-14 13:53:27 0 删除 编辑

链动2+1商城系统开发原理(源码搭建)   (I 89喂-o3oo-店2434)


该指令又称为对换指令,在Intel 80x86中又称为XCHG指令,用于交换两个字的内容。下面为伪代码。

void swap(boolean*a,boolean*b){

boolean temp;

temp=*a;

*a=*b;

*b=temp;

}

方法是为每个临界资源设置一个全局的布尔变量lock,初值为false,在每个进程中再利用一个局部变量key,利用swap指令实现进程互斥的循环进程,下面为伪代码描述。

do{

key=true;

do{

swap(&lock,&key);

}while(key!=false);

//临界区操作

lock=false;

}while(true);

利用上述硬件指令能够有效地实现进程互斥,但当临界资源忙碌时,其他访问进程必须不断地进行尝试,处于一种忙等的状态,不符合“让权等待”的原则,造成处理机时间的浪费,同时难以解决复杂问题。

接下来为java语言描述。

package chapter02;

//the class is the operation system's code

public class P057Swap{

private static int buffer;

private static boolean lock;

public static void main(String[]args){

lock=false;

buffer=0;

Thread prov=new ProvThreadClass();

prov.start();

Thread cust=new CustThreadClass();

cust.start();

}

public static boolean swap(boolean param){

boolean temp=lock;

lock=param;

param=temp;

//将替换的param参数回调回去

return param;

}

static class ProvThreadClass extends Thread{

Override

public void run(){

while(true){

//缓冲池满的话

if(buffer==10){

}

else{

boolean key=true;

do{

//将key值兑换,除非当前的lock为false的时候就可以跳出循环

key=swap(key);

}while(key!=false);

buffer+=1;

System.out.println("生产出1件产品,目前剩余产品个数:"+buffer);

lock=false;

}

try{

Thread.sleep(200);

}catch(InterruptedException e){

e.printStackTrace();

}

}

}

}

static class CustThreadClass extends Thread{

Override

public void run(){

while(true){

//缓冲池空的话

if(buffer==0){

}

else{

boolean key=true;

do{

//将key值兑换,除非当前的lock为false的时候就可以跳出循环

key=swap(key);

}while(key!=false);

buffer-=1;

System.out.println("消费1件产品,目前剩余产品个数:"+buffer);

lock=false;

}

try{

Thread.sleep(300);

}catch(InterruptedException e){

e.printStackTrace();

}

}

}

}

}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69980703/viewspace-2945772/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
系统开发:189-0300-2434

注册时间:2020-07-31

  • 博文量
    14
  • 访问量
    9450