कोड हार्ड कोडित JSON डेटा के साथ ठीक काम करता है फिर भी काम नहीं करता है जब मैं एक फ़ाइल से JSON डेटा पढ़ें। sync.WaitGroup
का उपयोग करते समय मुझे fatal error: all goroutines are asleep - deadlock
त्रुटि मिल रही है।GO भाषा: गंभीर त्रुटि: सभी goroutines सो रहे - गतिरोध नीचे
श्रमजीवी उदाहरण के साथ हार्ड-कोडेड JSON डेटा:
package main
import (
"bytes"
"fmt"
"os/exec"
"time"
)
func connect(host string) {
cmd := exec.Command("ssh", host, "uptime")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
fmt.Println(err)
}
fmt.Printf("%s: %q\n", host, out.String())
time.Sleep(time.Second * 2)
fmt.Printf("%s: DONE\n", host)
}
func listener(c chan string) {
for {
host := <-c
go connect(host)
}
}
func main() {
hosts := [2]string{"[email protected]", "[email protected]"}
var c chan string = make(chan string)
go listener(c)
for i := 0; i < len(hosts); i++ {
c <- hosts[i]
}
var input string
fmt.Scanln(&input)
}
उत्पादन:
[email protected]user-VirtualBox:~/go$ go run channel.go
[email protected]: " 09:46:40 up 86 days, 18:16, 0 users, load average: 5"
[email protected]: " 09:46:40 up 86 days, 17:27, 1 user, load average: 9"
[email protected]: DONE
[email protected]: DONE
नहीं काम - पढ़ना JSON डेटा फ़ाइल के साथ उदाहरण:
आउटपुट
[email protected]:~/go$ go run deploy.go < hosts.txt
[email protected]: " 09:46:40 up 86 days, 18:16, 0 users, load average: 5"
[email protected]: " 09:46:40 up 86 days, 17:27, 1 user, load average: 9"
[email protected] : DONE
[email protected]: DONE
fatal error: all goroutines are asleep - deadlock!
goroutine 1 [semacquire]:
sync.runtime_Semacquire(0xc210000068)
/usr/lib/go/src/pkg/runtime/sema.goc:199 +0x30
sync.(*WaitGroup).Wait(0xc210047020)
/usr/lib/go/src/pkg/sync/waitgroup.go:127 +0x14b
main.main()
/home/user/go/deploy.go:64 +0x45a
goroutine 3 [chan receive]:
main.listener(0xc210038060)
/home/user/go/deploy.go:28 +0x30
created by main.main
/home/user/go/deploy.go:53 +0x30b
exit status 2
[email protected]:~/go$
HOSTS.TXT
[
{
"username":"user1",
"ip":"111.79.154.111"
},
{
"username":"user2",
"ip":"111.79.190.222"
}
]
मैं GO उपयोग कर रहे हैं के बाद से कल (यहां तक कि एक दिन से भी कम) इसलिए मैं वास्तव में ज्यादा पता नहीं है, हालांकि मैं गया है पढ़ रहा डॉक्टर उपरोक्त कोड अध्ययन/अभ्यास के 1 दिन का परिणाम है। मैं वास्तव में कहाँ सोता हूँ? मैंने उदाहरण में देखा। – BentCoder
@inanzzz पहले जवाब को देखो। –
मुझे लगता है कि मैं गलत स्थानों में बातें डाल रहा हूं। 'घातक त्रुटि: सभी goroutines सो रहे - कम से कम लेकिन वहाँ है गतिरोध' – BentCoder