36 lines
462 B
Go
36 lines
462 B
Go
package main
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
type GTask struct {
|
|
GQueue
|
|
sync.WaitGroup
|
|
*GManager
|
|
}
|
|
|
|
func (my *GTask) Init(manager *GManager, qsize int) *GTask {
|
|
my.GManager = manager
|
|
my.GQueue.Init(qsize)
|
|
return my
|
|
}
|
|
|
|
func (my *GTask) Enter() {
|
|
if my.GManager != nil {
|
|
my.GManager.Enter()
|
|
}
|
|
my.WaitGroup.Add(1)
|
|
}
|
|
|
|
func (my *GTask) Exit() {
|
|
my.WaitGroup.Done()
|
|
if my.GManager != nil {
|
|
my.GManager.Exit()
|
|
}
|
|
}
|
|
|
|
func (my *GTask) Join() {
|
|
my.WaitGroup.Wait()
|
|
}
|