Mercurial > hg > Document > Growi
changeset 76:f20d2e9092de
backup 2021-07-13
author | autobackup |
---|---|
date | Tue, 13 Jul 2021 00:10:03 +0900 |
parents | da704bfde095 |
children | e7fad9d0486e |
files | user/matac42/note/2021/07/12/christie.md |
diffstat | 1 files changed, 40 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/user/matac42/note/2021/07/12/christie.md Tue Jul 13 00:10:03 2021 +0900 @@ -0,0 +1,40 @@ +# waitlist + +![waitlist.svg](/attachment/60ebcd5e0a7b37004aefec1d) + +- waitlistはDGMが所持している +- waitlistはDGMの数だけ存在する + +### setup + +- どのような変数を持ったDGがあるかを読み取りwaitlistのqueueに入れる +- Take or Peekが読み取られる +- 「CGはDGの変数すべて揃わないと実行されない」という特性を実現するためにあらかじめ変数を読み取っておく +- どういったCGがあるかはこの時点ではまだわからない +- Commandとしてwaitlistにaddしていく感じ + +WaitList.java +```java +public synchronized void add(Command cm) { + if(waitList.containsKey(cm.key)){ + waitList.get(cm.key).add(cm); + } else { + LinkedBlockingQueue<Command> queue = new LinkedBlockingQueue<>(); + queue.add(cm); + waitList.put(cm.key, queue); + } + } +``` +- waitListに"hello"と"world"がaddされている + +![スクリーンショット 2021-07-12 14.57.57.jpg](/attachment/60ebd9ee0a7b37004aefec29) + +(src/test/java/christie/example/HelloWorld) + +### put + +- DGを入れる + - 変数の値をセットする +- putして変数の値が揃ったCGはrunCommand()でTake or Peekが実行される + +