"fmt"
"log"
"os"
- "os/signal"
"regexp"
"strconv"
"sync"
- "syscall"
)
const (
jsTokens[jsToken]++
jsRelease("ifchange entered", jsToken)
}
-
- killed := make(chan os.Signal, 0)
- signal.Notify(killed, syscall.SIGTERM, syscall.SIGINT)
- go func() {
- <-killed
- jsTokensM.Lock()
- for token, i := range jsTokens {
- for ; i > 0; i-- {
- jsReleaseNoLock(token)
- }
- }
- jsTokensM.Unlock()
- os.Exit(1)
- }()
}
func jsReleaseNoLock(token byte) {
jsTokensM.Unlock()
}
+func jsReleaseAll() {
+ jsTokensM.Lock()
+ for token, i := range jsTokens {
+ for ; i > 0; i-- {
+ jsReleaseNoLock(token)
+ }
+ }
+ jsTokensM.Unlock()
+}
+
func jsAcquire(ctx string) byte {
if JSR == nil {
return BMakeGoodToken