<future> nötig oder nicht

  • Ich habe im Code von Skin flatPlus mehrere Stellen , wo Timer abgefragt werden. Beispiel:

    Aber ein mal auch das:

    Code
                // Look for timers
                auto recCounterFuture = std::async([&NumRec]() {
                    LOCK_TIMERS_READ;  // Creates local const cTimers *Timers
                    for (const cTimer *ti = Timers->First(); ti; ti = Timers->Next(ti)) {
                        if (ti->HasFlags(tfRecording))
                            ++NumRec;
                    }
                });
                recCounterFuture.get();
                if (NumRec) {

    Bracht man das async zeugs? Ich verstehe den Nutzen in dem Fall nicht.

    Kanallogos: Picon.cz2VDR | Picons2VDR | MP-Logos
    Backupskripte:
    MV_Backup (RSync) | MV_BorgBackup (Borg)

    Skin: Skin FlatPlus  VDR-Add_MSGT

    "Es gibt keinen Grund, warum irgendjemand einen Computer in seinem Haus wollen würde."
    [Ken Olson], Präsident der Digital Equipment Corp., 1977

    VDR01 - yaVDR 0.7 (VDR 2.7.3)

    VDR 2.7.3; Gehäuse: Antec Fusion V2 Black & iMon LCD; Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i5-3550, GTX 1050 Ti, 8 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5

    >Systeminfo.txt< [VDR-User #1540]

  • Jemand hat wohl damit versucht zu erreichen, in der Variable NumRec die Anzahl aktiver Timer mit weiteren Threads zu ermitteln, und zwar so, dass die Anzahl in der Variable steht, noch bevor der restliche Code aufgerufen wird.

    Sobald die Lambda Funktion durchgelaufen ist, wird im Rückgabe std::future ein Flag gesetzt. get() wartet dann solange im aktuellen thread bis das Ergebnis da ist.

    Geht wohl um Geschwindigkeit..

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • Aber mit gleich danach den get() call, bringt doch keinen Geschwindigkeitsvorteil.

    Vielleicht wollte man damit einen invalid lock sequence vermeiden, indem man den Lock in einen eigenen Thread gepackt hat ?

    VDR

    Server: Ubuntu 24.04 headless VDR im LXC Container, Plugins: satip (Octopus NET SL SX8), live, epgsearch, epg2vdr, markad

    Clients: LibreELEC auf RasPi3 und RasPi 3+

  • So weit ich das als Laie sehe, ist die baserender.c nicht in einem eigenen Threat und es ist auch die einzige Stelle im Code.

    Vielleicht wollte man damals so was einbauen, hat aber nicht weiter gemacht? Ich kann das sicher deaktivieren, oder?

    https://github.com/MegaV0lt/vdr-p…serender.c#L447

    Kanallogos: Picon.cz2VDR | Picons2VDR | MP-Logos
    Backupskripte:
    MV_Backup (RSync) | MV_BorgBackup (Borg)

    Skin: Skin FlatPlus  VDR-Add_MSGT

    "Es gibt keinen Grund, warum irgendjemand einen Computer in seinem Haus wollen würde."
    [Ken Olson], Präsident der Digital Equipment Corp., 1977

    VDR01 - yaVDR 0.7 (VDR 2.7.3)

    VDR 2.7.3; Gehäuse: Antec Fusion V2 Black & iMon LCD; Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i5-3550, GTX 1050 Ti, 8 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5

    >Systeminfo.txt< [VDR-User #1540]

  • Es ist eine synchronisation zwischen mehreren threads, ob das auch nützlich ist, kann man nur verstehen wenn man im Code gräbt.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!