대기열

Uma 대기열은 기본 프로세스와 기본 프로세스로 구성됩니다.

Operações como enqueue(entra na fila), dequeue(sai da fila) e peek(observar fila) podem ser executadas na queue.
A queue é um esttrutura de dados linear e uma coleção sequencial.

열렬한 지지를 받으며 최종 결정을 내리십시오. 대기 중인 작업에 대한 대기열은 HTTP que precisam ser processadas por um servidor를 필요로 합니다.
Tratamento de interrupções em real-time systems, call handling e schedule de task de CPU
são bons exemplos de uso de queues.

큐는 다른 형식에 따라 구현되며, 의존자는 프로포시토에 따라 달라집니다.

주사위를 굴려



Um bom exemplo de como funciona uma queue é pensar num jogo de rpg, geralmente quando vamos iniciar uma batalha precisamos jogar os dados e definir através do resultado quem tem mais pontos de iniciatina inici. e base
Faz um bom tempo que não jogo então não lembro tão bem, mas acho que a iniciativa é baseada em quem tirar o menor número no dado, mas talvez isso possa variar.

Então o primeiro na fila é o primeiro a atuar e também o Primeiro a sair da fila dando lugar para o próximo. O Primeiro da fila é o Primeiro a sair dela. 선입선출(FIFO).

Já em rpgs eletrônicos com batalhas de turno se defined o Primeiro da fila como aquele que tem o maior numero no stat de agility, speed ou move.

인물



Vou dar um exemplo de uma queue bem simples, aqui vou definir os dados de personagens do rpg.

type personagem struct {
    nome string
    mov  int
}


대기줄



Essa aqui é a queue, vou usar um slice mas queues são Implementadas de diferentes formas, essa é para se ter uma introdução.

type queue struct {
    slice []personagem
}


오르데난도 오 투르노



Esse é um sort customizado que é possível de ser feito em Go, ele não é necessário para se fazer uma queue, mas nesse exemplo eu quero utilizar o sort para ordenar um slice de personagens baseado no atributo de movimento, fazendo 텐하 오 마이어 니벨 네세 atributo possa entrar na filaprimeiro.

Geralmente eu não gosto de usar parametros como (i, j, a, k) mas como esse sort vem da documentação padrão então vou deixá-lo como na documentação, pois ele não é o casoco. nesse

type primeiroDaFila []personagem

func (a primeiroDaFila) Len() int           { return len(a) }
func (a primeiroDaFila) Less(i, j int) bool { return a[i].mov > a[j].mov }
func (a primeiroDaFila) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }


FIFO 인큐/디큐



Esses aqui são os metodos que mencionei no inicio enqueue insere um personagem na queue, dequeue retira o primeiro personagem da queue.

Caso não tenha familiidade com Go talvez você tenha estranhado essa parte (fila.slice[1:len(fila.slice)]) essa é uma operação de slicing, [1:] significa: "eu quero tudo que está do index 1 até , o 슬라이스 = len(fila.slice)"인덱스 0을 제외합니다.

O dequeue não leva parametros justamente porque a ideia da queue não é escolher quem retirar da fila então só retornamos o personagem removido.

func (fila *queue) enqueue(nome personagem) {

    fila.slice = append(fila.slice, nome)
}

func (fila *queue) dequeue() personagem {

    removido := fila.slice[0]
    fila.slice = fila.slice[1:len(fila.slice)]

    return removido
}


이니시안도 오 투르노



주요 기능 및 기능 주요 기능, criamos uma instância de personagens e uma fila, em seguida usamos a função de ordenação para que essa lista fique na ordem em que o personagem com est maior ní

Fazemos uma iteração para inserir na fila todos os personagens que foram ordenados.

func main() {

    equipe := []personagem{
        {"Saravasti", 4},
        {"Athena", 4},
        {"Argath", 5},
    }

    var fila *queue = new(queue)

    sort.Sort(primeiroDaFila(equipe))

    for i := range equipe {
        fila.enqueue(equipe[i])
    }

    fmt.Println(fila)
    fila.dequeue()
    fmt.Println(fila)

}


Aqui tem a Primeira saída Mostrando a fila ordenada.

&{[{Argath 5} {Saravasti 4} {Athena 4}]}


Uma chamada para o metodo dequeue, para que o Primeiro personagem após realizar sua ação dê seu lugar ao próximo personagem com maior atributo de movimento, e a saída Mostrando a fila depois do dequeue.

&{[{Saravasti 4} {Athena 4}]}

좋은 웹페이지 즐겨찾기