@@ -36,38 +36,30 @@ func FundAll(ctx context.Context, funders []*channel.Funder, reqs []*pchannel.Fu
36
36
var mutex sync.Mutex
37
37
38
38
var wg sync.WaitGroup
39
- wg .Add (2 )
39
+ wg .Add (len ( funders ) )
40
40
41
- go func () {
42
- defer wg .Done ()
43
- startTime := time .Now ()
44
- err := funders [egoisticIndex ].Fund (ctx , * reqs [egoisticIndex ])
45
- require .NoError (t , err )
46
- finishTime := time .Now ()
47
- require .NoError (t , err )
48
- mutex .Lock ()
49
- finishTimes [egoisticIndex ] = FunderFinishTime {
50
- Index : egoisticIndex ,
51
- Time : finishTime .Sub (startTime ),
52
- }
53
- mutex .Unlock ()
54
- }()
41
+ waitTime := 2 * time .Second
55
42
56
- go func () {
57
- defer wg .Done ()
58
- time .Sleep (2 * time .Second )
59
- startTime := time .Now ()
60
- err := funders [1 - egoisticIndex ].Fund (ctx , * reqs [1 - egoisticIndex ])
61
- require .NoError (t , err )
62
- finishTime := time .Now ()
63
- require .NoError (t , err )
64
- mutex .Lock ()
65
- finishTimes [1 - egoisticIndex ] = FunderFinishTime {
66
- Index : 1 - egoisticIndex ,
67
- Time : finishTime .Sub (startTime ),
68
- }
69
- mutex .Unlock ()
70
- }()
43
+ for i := range funders {
44
+ i := i
45
+ go func () {
46
+ defer wg .Done ()
47
+ if i != egoisticIndex {
48
+ time .Sleep (waitTime )
49
+ }
50
+ startTime := time .Now ()
51
+ err := funders [i ].Fund (ctx , * reqs [i ])
52
+ require .NoError (t , err )
53
+ finishTime := time .Now ()
54
+ mutex .Lock ()
55
+ finishTimes [i ] = FunderFinishTime {
56
+ Index : i ,
57
+ Time : finishTime .Sub (startTime ),
58
+ }
59
+ mutex .Unlock ()
60
+ }()
61
+
62
+ }
71
63
72
64
wg .Wait ()
73
65
return finishTimes , nil
0 commit comments