WebHU - Programozási kérdések és válaszok

Nem blokkoló csatornaműveletek folyamatban. Küld?

Végigmegyek a Példa szerint: Nem blokkoló csatornaműveletek

Ha jól értem, az első select a default esetet váltja ki, mert a messages csatornán nincs semmi, és ha a default eset nem létezne, akkor fatal error: all goroutines are asleep - deadlock! hibát kapunk, nem?

Nos, nem tudok rájönni, hogyan tudom elindítani a második select-ot, konkrétan a case messages <- msg:-et

Ahogy gondoltam, a fogadással szemben kell működnie. Tehát ha van puffer 2 üzenethez, és a 3. üzenetet küldjük a csatornának, akkor az kiváltja a default záradékot, de a messages csatorna üres, akkor miért váltja ki a második kiválasztásnál a default záradékot? És hogyan tudom aktiválni a case messages <- msg: záradékot?

06.12.2016

Válaszok:


1

miért váltja ki a második kijelölésben az alapértelmezett záradékot?

Mivel a csatorna nincs pufferelve, és nincs más go rutin blokkolva vételkor.

hogyan tudom kiváltani a ‹- msg: záradékot?

A következőket teheti:

  1. Tegye messages puffereltté

    messages := make(chan string, 1)
    

    https://play.golang.org/p/b1aO6N-dYf

  2. Hozzon létre egy másik go-rutint, amelyet a fogadáskor blokkol

    go func() {
        fmt.Println("Received from other go routine", <-messages)
    }()
    

    https://play.golang.org/p/Z7e1ZcO3C5

06.12.2016
  • még több kérdés :D de remélhetőleg magamtól is rájövök, köszönöm! 06.12.2016
  • @Arno, olvasd el ezt a bejegyzést stackoverflow.com/questions/18660533/ a magyarázatokhoz :) 07.12.2016
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..