robinson / gos7

Implementation of Siemens S7 protocol in golang
BSD 3-Clause "New" or "Revised" License
315 stars 124 forks source link

support goroutine connect to multi devices #9

Closed hongjinlin closed 5 years ago

hongjinlin commented 5 years ago

old code has WARNING: DATA RACE for multi connect go test -race -run=TestMultiTCPClient -v WARNING: DATA RACE Write at 0x000004d8dce0 by goroutine 8: gos7_mine.(tcpTransporter).negotiatePduLength() /Users/hongjinlin/go/src/gos7_mine/tcpclient.go:224 +0x31c gos7_mine.(tcpTransporter).connect() /Users/hongjinlin/go/src/gos7_mine/tcpclient.go:191 +0xa7 gos7_mine.(*tcpTransporter).Connect() /Users/hongjinlin/go/src/gos7_mine/tcpclient.go:164 +0x38 gos7_mine/test.TestMultiTCPClient.func1() /Users/hongjinlin/go/src/gos7_mine/test/tcpclient_test.go:54 +0x2dd

Previous write at 0x000004d8dce0 by goroutine 7: gos7_mine.(tcpTransporter).negotiatePduLength() /Users/hongjinlin/go/src/gos7_mine/tcpclient.go:224 +0x31c gos7_mine.(tcpTransporter).connect() /Users/hongjinlin/go/src/gos7_mine/tcpclient.go:191 +0xa7 gos7_mine.(*tcpTransporter).Connect() /Users/hongjinlin/go/src/gos7_mine/tcpclient.go:164 +0x38 gos7_mine/test.TestMultiTCPClient.func1() /Users/hongjinlin/go/src/gos7_mine/test/tcpclient_test.go:54 +0x2dd

Goroutine 8 (running) created at: gos7_mine/test.TestMultiTCPClient() /Users/hongjinlin/go/src/gos7_mine/test/tcpclient_test.go:47 +0x261 testing.tRunner() /usr/local/Cellar/go/1.11.2/libexec/src/testing/testing.go:827 +0x162

Goroutine 7 (finished) created at: gos7_mine/test.TestMultiTCPClient() /Users/hongjinlin/go/src/gos7_mine/test/tcpclient_test.go:47 +0x261 testing.tRunner() /usr/local/Cellar/go/1.11.2/libexec/src/testing/testing.go:827 +0x162