tls.Dial("tcp", "imap.yourserver.com:143", &tls.Config{
InsecureSkipVerify: true,
})
var Data []uint64 //700 млн 64бит uint значений
var Respond []uint64 //значения около 100.000 на каждый запрос
var res chan uint64 //канал передачи годных значений
func TakeFromData(DataPart []uint64, res chan uint64){ //функция фильтра которой передается часть данных и канал годных
for _, val := range DtaPart{
if Good(val){
res <- val //пишет годные в канал
}
}
}
go TakeFromData(Data[:len(Data)/2], res) //запускается конкурентно в отдельном потоке
go TakeFromData(Data[len(Data)/2:], res) // несколько экземпляров
for val:=range res{ //агрегатор в своем потоке читает из канала по мере фильтрации
Respond:=append(Respond, val) //и формирует результат
}
Конечно можно написать multithreaded на С, только мороки будет больше. m := melody.New()
m.Upgrader.CheckOrigin = func(r *http.Request) bool { return true }
i := interface{}(&v{})
t := reflect.TypeOf(i).Name()
fmt.Println("type:",t)
i := interface{}(v{})
t := reflect.TypeOf(i).Name()
i := interface{}(&v{})
t := reflect.TypeOf(i).Elem().Name()
type State struct {
state int
step int
states []int
}
func NewState(states []int) *State {
return &State{
0,
states[0],
states,
}
}
func (s *State) update() {
if s.step > 0 {
s.step--
fmt.Println("step=", s.step) //do something
} else {
s.changestate()
fmt.Println("state=", s.state) //do something else
}
}
func (s *State) changestate() {
if s.state < len(s.states)-1 {
s.state++
} else {
s.state = 0
}
s.step = s.states[s.state]
}
func main() {
st := NewState([]int{4, 2, 3, 4})
st.update()
}
templateWithNewDelimiters := yourTemplate.Delims("{[", "]}")
sendPush(), preparesendPush()
вы передаете apns.Client
в качестве параметра. Go всегда передает параметры 'copy_by_value', то есть создается и передается копия client при каждом вызове. apns.Client // contains filtered or unexported fields
, то есть неизвестно что копируется и насколько оно поддается мусорщику. Попробуйте передавать один и тот же client ссылкой func prepareSendingPush(client *apns.Client), func sendPush(client *apns.Client...
вызывая prepareSendingPush(&c)