我很难获得并发性才能正常工作。我正在处理从XML数据源加载的数据。一旦将数据加载到内存中,就循环遍历XML元素并执行操作。并发添加之前的代码已经过测试并且可以正常工作,我认为它对并发添加没有任何影响。我在并发实现上有2次失败尝试,但均输出不同。我使用锁定是因为我不想输入竞争条件。
对于此实现,它永远不会进入goroutine。
Weekday(<date>, [<optional vbDayOfWeek>])
对于使用waitGroups的实现, var mu sync.Mutex
// length is 197K
for i:=0;i<len(listings.Listings);i++{
go func(){
mu.Lock()
// code execution (tested prior to adding concurrency and locking)
mu.Unlock()
}()
}
a runtime out of memory occurs
我不太确定这是怎么回事,可以使用一些帮助。
答案 0 :(得分:1)
Mutex
https://play.golang.org/p/s4e0YyHdyPq
package main
import (
"fmt"
"sync"
)
type Listing struct{}
func main() {
var (
wg sync.WaitGroup
concurrency = 100
)
c := make(chan Listing)
wg.Add(concurrency)
for i := 0; i < concurrency; i++ {
go func(ci <-chan Listing) {
for l := range ci {
// code, l is a single Listing
fmt.Printf("%v", l)
}
wg.Done()
}(c)
}
// replace with your var
listings := []Listing{Listing{}}
for _, l := range listings {
c <- l
}
close(c)
wg.Wait()
}