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()
}
Исходя из задачи, требуется исполнение в виде частых опросов.
import java.net.InetAddress;
import java.net.Socket;
#!/bin/bash
for file in $@
do
Inode=$(stat $file | grep -- 'Inode:' | sed -e's/.*Inode: \([0-9]*\).*/\1/')
Links=$(stat $file | grep -- 'Links:' | sed -e's/.*Links: \([0-9]*\).*/\1/')
if test $Links -ge 2
then
find -inum $Inode | xargs shred -u -n 30 -z
else
stat $file | grep -- 'File:' | sed -e's/[^‘]*‘\([^ ]*\)’[^‘]*/\1 /g' | xargs shred -u -n 30 -z
fi
done