annotate Paper/chapter/one_flock_test1.pl @ 9:cc4cb64f9af9

add impl
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Tue, 25 Jan 2022 22:27:11 +0900
parents 853d7c65f524
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #!/usr/local/bin/perl
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 use Fcntl ':flock';
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 $plane="plane_reserve";
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 $hotel="hotel_reserve";
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 my $user = $ARGV[0];
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 open(HOTEL,"+<$hotel") || die("$$ $user can't open $plane\n");
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 open(PLANE,"+<$plane") || die("$$ $user can't open $plane\n");
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 flock(HOTEL,LOCK_EX);
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 flock(PLANE,LOCK_EX);
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 sleep 1;
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 &reserve('HOTEL',$hotel);
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 # flock(HOTEL,LOCK_UN);
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 close(HOTEL); # and release lock
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 sleep 1;
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 &reserve('PLANE',$plane);
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 close(PLANE); # and release lock
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 sub reserve {
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 my ($fh,$file)=@_;
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 if(($value = <$fh>)>0) {
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 seek($fh, 0, 0);
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 print $fh $value-1,"\n";
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 print "$user $file reserved\n";
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 return 1;
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 } else {
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 die("$$ $user can't reserve $file\n");
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 }
853d7c65f524 add Chapter2,3
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 }