change how thread joins

This commit is contained in:
2023-06-27 22:13:03 +01:00
parent 5bb89a86a7
commit 85e2964471

View File

@@ -2,7 +2,6 @@ package main
import ( import (
"fmt" "fmt"
"sync"
) )
func ArThread(args ...any) (any, ArErr) { func ArThread(args ...any) (any, ArErr) {
@@ -26,7 +25,7 @@ func ArThread(args ...any) (any, ArErr) {
hasrun := false hasrun := false
joined := false joined := false
var wg sync.WaitGroup var wg = make(chan bool)
threadMap := Map(anymap{ threadMap := Map(anymap{
"start": builtinFunc{"start", func(args ...any) (any, ArErr) { "start": builtinFunc{"start", func(args ...any) (any, ArErr) {
if hasrun { if hasrun {
@@ -36,10 +35,9 @@ func ArThread(args ...any) (any, ArErr) {
return nil, ArErr{TYPE: "TypeError", message: "Invalid number of arguments, expected 0, got " + fmt.Sprint(len(args)), EXISTS: true} return nil, ArErr{TYPE: "TypeError", message: "Invalid number of arguments, expected 0, got " + fmt.Sprint(len(args)), EXISTS: true}
} }
hasrun = true hasrun = true
wg.Add(1)
go func() { go func() {
resp, err = runCall(call{tocall, []any{}, "", 0, ""}, nil, 0) resp, err = runCall(call{callable: tocall, args: []any{}}, nil, 0)
wg.Done() wg <- true
}() }()
return nil, ArErr{} return nil, ArErr{}
}}, }},
@@ -53,7 +51,7 @@ func ArThread(args ...any) (any, ArErr) {
return nil, ArErr{TYPE: "TypeError", message: "Invalid number of arguments, expected 0, got " + fmt.Sprint(len(args)), EXISTS: true} return nil, ArErr{TYPE: "TypeError", message: "Invalid number of arguments, expected 0, got " + fmt.Sprint(len(args)), EXISTS: true}
} }
joined = true joined = true
wg.Wait() <-wg
return resp, err return resp, err
}}, }},
}) })