@@ -77,19 +77,25 @@ func NewCoroutine(ctx Context, fn func(ctx Context) error) Coroutine {
77
77
return s
78
78
}
79
79
80
+ // var i = 0
81
+
80
82
func newState () * coState {
83
+ // i++
84
+
81
85
return & coState {
82
86
blocking : make (chan bool , 1 ),
83
87
unblock : make (chan bool ),
84
88
logger : log .New (io .Discard , "[co]" , log .LstdFlags ),
85
- //logger: log.New(os.Stderr, fmt.Sprintf("[co %v]", i), log.Lmsgprefix|log.Ltime),
89
+ // logger: log.New(os.Stderr, fmt.Sprintf("[co %v]", i), log.Lmsgprefix|log.Ltime),
86
90
deadlockDetection : DeadlockDetection ,
87
91
}
88
92
}
89
93
90
94
func (s * coState ) finish () {
91
95
s .finished .Store (true )
92
96
s .blocking <- true
97
+
98
+ s .logger .Println ("finish" )
93
99
}
94
100
95
101
func (s * coState ) SetScheduler (scheduler Scheduler ) {
@@ -137,8 +143,10 @@ func (s *coState) yield(markBlocking bool) {
137
143
138
144
<- s .unblock
139
145
if s .shouldExit .Load () != nil {
146
+ s .logger .Println ("shouldExit" )
147
+ s .blocking <- true
148
+ s .logger .Println ("goexit" )
140
149
runtime .Goexit ()
141
- s .logger .Println ("exit" )
142
150
}
143
151
144
152
s .blocked .Store (false )
@@ -171,6 +179,8 @@ func (s *coState) Execute() {
171
179
}
172
180
173
181
func (s * coState ) Exit () {
182
+ s .logger .Println ("exit" )
183
+
174
184
if s .Finished () {
175
185
return
176
186
}
0 commit comments