@@ -25,11 +25,12 @@ Problem when reading and writing async:
25
25
26
26
func NewQueue [T any ]() (func (T ), func (types.Unit ) (T , error )) {
27
27
j := junction .NewJunction ()
28
+ j1 := junction .NewJunction ()
28
29
29
30
firstPort , firstSignal := junction.NewAsyncSignal [QueueElement [T ]](j )
30
- lastPort , lastSignal := junction.NewAsyncSignal [QueueElement [T ]](j )
31
+ lastPort , lastSignal := junction.NewAsyncSignal [QueueElement [T ]](j1 )
31
32
32
- enqueuePort , enqueueSignal := junction.NewAsyncSignal [T ](j )
33
+ enqueuePort , enqueueSignal := junction.NewAsyncSignal [T ](j1 )
33
34
dequeuePort , dequeueSignal := junction.NewSyncSignal [types.Unit , T ](j )
34
35
35
36
junction .NewBinaryAsyncJoinPattern [QueueElement [T ], T ](lastPort , enqueuePort ).Action (func (last QueueElement [T ], value T ) {
@@ -43,10 +44,10 @@ func NewQueue[T any]() (func(T), func(types.Unit) (T, error)) {
43
44
44
45
junction .NewBinarySyncJoinPattern [QueueElement [T ], types.Unit , T ](firstPort , dequeuePort ).Action (func (first QueueElement [T ], a types.Unit ) T {
45
46
nextSignal , _ := first .getNextSignal (types.Unit {})
46
- val , _ := first .getValueSignal (types.Unit {})
47
-
48
47
firstSignal (nextSignal )
49
48
49
+ val , _ := first .getValueSignal (types.Unit {})
50
+
50
51
return val
51
52
})
52
53
@@ -73,6 +74,8 @@ func newQueueElement[T any]() QueueElement[T] {
73
74
74
75
junction .NewBinarySyncJoinPattern [T , types.Unit , T ](setValuePort , getValuePort ).
75
76
Action (func (val T , a types.Unit ) T {
77
+ // Added for benchmarking
78
+ time .Sleep (time .Duration (10 ))
76
79
return val
77
80
})
78
81
0 commit comments