[VMM: PYTANIE] Jaka jest różnica w porównaniu z okiem i odbieraj?

C

cnspy

Guest
Cześć, co za różnica między okiem i dostać vmm_channel?

I spróbuj użyć następującego kodu:

in_chan.peek (tran_data);
do_read (tran_data);
in_chan.get (tran_data);

To działa.

Ale jeśli próbuję to tak:
in_chan.get (tran_data);
do_read (tran_data);

Myślę, że symulacja została zablokowana.Więc nie wiem dlaczego.

 
in_chan.peek (tran_data);
uzyskać kopię tran_data, oryginalna tran_data nadal pozostaje w kanale

in_chan.get (tran_data);
get tran_data się z kanału i kanału jest teraz pusty

 
Telantan Thanks:

Ale myślę, że różnica jest tylko dane wyprowadzić z kanału czy też nie.Dlaczego symulacji będą blokowane, jeżeli śpią in_chan.get () tylko?

Czy get () spowoduje skopiowanie danych tran_data?

 
W przypadku, tere jest tylko jeden danych w kanale.Get wyjmuje z kanału.Więc nic nie pozostaje w kanale.A teraz to zadanie blokowania.To będzie zablokowany do innego danych przybywa na kanał.Nie byłoby pewne non-blocking zadania, jak również (coś jak can_get lub niektóre inne nazwy).To nie zadanie blokowanie nie będą blokowane w przypadku braku danych w kanale

 
. get () odbędzie się dane z Channe,
. Peek () będzie po prostu wziąć kopię danych,

zarówno zadania blokowanie,
zatrzymuje symulację jeśli kanał jest ponownie za conajmniej jednego członka danych.

jeśli kanał jest pusty, a jeśli robi. get () w tym oczywiście symulacji będą blokowane.

istnieją non_blocking try_get zadań () i try_peek (), która działa jak get () i peek (), ale does't bloków symulacji, czy kanał jest pusta,
po prostu nie zwraca '0 'i nadal symulacji dalej ...

 
Vishalvartak Podziękowania i vinod_cheedella:

Mam gdzie robię błąd.

Teraz mam inne pytanie.W bloku programu, mam biegać env.run () i wywołał env.end_test.Jednak symulacja nie ustaje.

 

Welcome to EDABoard.com

Sponsor

Back
Top